PGF90-F-0000-Internal compiler error. Errors in Lowering 2

Hi Mat and other developers,

I’m back. I don’t understand what the following errors mean. I have tried PGI 7.2.5 and 8.0.5. Both report the errors.

8.0.5:

FC Halos_Numbering.F90
/opt/cray/xt-asyncpe/3.0/bin/ftn: INFO: linux target is being used
Lowering Error: bad ast optype in expression [ast=1454,asttype=12,datatype=0]
Lowering Error: bad ast optype in expression [ast=1454,asttype=12,datatype=0]
PGF90-F-0000-Internal compiler error. Errors in Lowering 2 (Halos_Numbering.F90: 111)
PGF90/x86-64 Linux 8.0-5: compilation aborted
gmake[1]: *** [Halos_Numbering.o] Error 1
make: *** [lib/libdfluidity.a] Error 2

7.2.5:

FC Halos_Numbering.F90
/opt/cray/xt-asyncpe/3.0/bin/ftn: INFO: linux target is being used
Lowering Error: bad ast optype in expression [ast=1454,asttype=12,datatype=0]
Lowering Error: bad ast optype in expression [ast=1454,asttype=12,datatype=0]
PGF90-F-0000-Internal compiler error. Errors in Lowering 2 (Halos_Numbering.F90: 111)
PGF90/x86-64 Linux 7.2-5: compilation aborted
gmake[1]: *** [Halos_Numbering.o] Error 1

The code around line 111 in the .F90 is

88 #ifdef HAVE_MPI
89 integer :: communicator, i, ierr, nowned_nodes, nprocs, rank, count, node_count
90 integer, dimension(:), allocatable :: receive_types, requests,&
91 & send_types, statuses
92 logical, dimension(:), allocatable :: local_nodes
93
94 ewrite(1,*) “Creating universal numbering for a general order halo”
95
96 nprocs = halo_proc_count(halo)
97 communicator = halo_communicator(halo)
98 nowned_nodes = halo_nowned_nodes(halo)
99
100 ! Calculate the base universal node number for the owned nodes. The i th
101 ! owned node then has universal node number equal to the base + i.
102 call mpi_scan(nowned_nodes, halo%owned_nodes_unn_base, 1, getpinteger(), MPI_SUM, communicator, ierr)
103 assert(ierr == MPI_SUCCESS)
104 halo%owned_nodes_unn_base = halo%owned_nodes_unn_base - nowned_nodes
105
106 node_count = nowned_nodes + halo_all_receives_count(halo)
107
108 allocate(local_nodes(node_count))
109 local_nodes=.true.
110 assert(max_halo_receive_node(halo) <= node_count)
111 do i = 1, nprocs
112 local_nodes(halo_receives(halo, i)) = .false.
113 end do
114
115 allocate(halo%gnn_to_unn(node_count))
116 halo%gnn_to_unn=-1
117
118 count=halo%owned_nodes_unn_base

The error may refer to somewhere nearby. Is there any clue?

This is a big package. I can pass Halos_Numbering.F90 or the whole package to you.

Thanks.

Hi yus,

Unfortunately, this is an error with the compiler. Please send Halos_Numbering.F90 to PGI customer service (trs@pgroup.com) along with any required module source files and the command line options you use. We’ll take a look and hopefully get the problem resolved shortly.

Thanks,
Mat

Mat:

I’ve sent the whole package to your site. Have you got it?

I did and was able to put together a example reproducing the problem this morning. I have file TPR#15998 and have sent it to our engineers.

Thanks,
Mat

Is the fix to this bug in PGI release plan?

Hi Yus,

It doesn’t look like the fix will be make into this weeks 9.0-3 release. Hopefully by 9.0-4 in September.

  • Mat

Hi Mat,

Thanks for the news.

Hi yus,

The engineer who is looking at TRP#15998 sent me this update.

Isolated the errors to two calls to mpi_type_create_indexed_block()
in Halos_Numbering.F90:create_global_to_universal_numbering_order_general().
In each case, the compiler bug is with processing the 3rd argument, an array
expression that corresponds to an adjustable array formal argument:

call mpi_type_create_indexed_block(halo_send_count(halo, i), 1, &
& halo_sends(halo, i) - lbound(halo%gnn_to_unn, 1), & <<<-- BUG
& getpinteger(), send_types(i), ierr)

and

call mpi_type_create_indexed_block(halo_receive_count(halo, i), 1, &
& halo_receives(halo, i) - lbound(halo%gnn_to_unn, 1), & <<<-- BUG
& getpinteger(), receive_types(i), ierr)

A workaround is to use a temp for the lbound expression in the third
argument, e.g.,

  • Mat

Hi Mat,

Is this problem fixed in the new release?

Thanks.

yus

Hi yus,

Yes, TPR#15998 is fixed as of the 9.0-4 release.

  • Mat

Many thanks for the quick fix.