This is my first attempt to implement parallelization in a working program. The program structure I use follows closely that of an example shown in Section 5.1.3 of the PGI User’s Guide. I’m using PGI version 18.4 Community Edition. Here is a mock-up of my code:
function MyFunction(MyArguments) result(MyResult)
if (mytest1) then ! Line A
!$OMP Parallel Private(La, others) Shared(L, others)
do La = 1, L
!$OMP end do
!$OMP end Parallel
else if (mytest2) then !Line B
end if !Line C
end function MyFunction
Compilation of this code produces 6 errors. The first two errors are “unterminated PARALLEL directive” that point first to Line B and then to Line C. The next 3 errors are “cannot branch out of parallel/teams/task region” that point to lines beyond Line C. The final error is “unterminated block if” that points to Line A.
These errors make sense if the !$OMP end parallel statement is not recognized, but I don’t know why it is not recognized. Can someone please explain this to me? Thanks.