!$OMP PARALLEL DO PRIVATE(thread,subs,tile) SHARED(ng,numthreads)
DO thread=0,numthreads-1
subs=NtileX(ng)*NtileE(ng)/numthreads
DO tile=subs*(thread+1)-1,subs*thread,-1
CALL step3d_uv (ng, TILE)
END DO
END DO
!$OMP END PARALLEL DO
codes like that, in define distribute situation, NtileX=NtileE=1, numthreads=1, subs=1, thread=0,
it seems that tile always equals 0, so what the multiple processes really runs?
is there any different between the lowercase tile and the Capital TILE?
in the get_grid.F, tile=myrank, it looks like reasonable if tile relates to myrank when call for subroutines, but tile is always a local var...
could somebody introduce something about this?
variable tile seems to always be 0, how the mpi really runs?
Re: variable tile seems to always be 0, how the mpi really runs?
From globaldefs.h:
So, yes, it is case sensitive in this circumstance because the C preprocessor is.
Code: Select all
#ifdef DISTRIBUTE
# define TILE MyRank
#else
# define TILE tile
#endif
Re: variable tile seems to always be 0, how the mpi really runs?
Thanks, really helpful!