Hi, I use the Inspector to see if my program has any data race conditions. I get a warning that I cannot interpret. This is a segment of the code:
!$omp parallel do default(none) & !$omp private(j) & !$omp shared(nb1,nb2, adf) & !$omp reduction(+:counter) & !$omp schedule(static,200) do j=1,nb1+nb2 ... counter=counter+1 CALL DGETRF(adf(j+1)-adf(j),adf(j+1)-adf(j),A(1,1,j),mxxinj,IPVT(1,j),info) ... endifIt issues a "data race" on the DGETRF subrouting call. More specifically, the call stack goes: my_subroutine->libmkl_intel_lp64.so!DGETRF_->libmkl_core.so!mkl_serv_allocate for the Read description andmy_subroutine->libmkl_intel_lp64.so!DGETRF_->libmkl_core.so!mkl_serv_allocate->libmkl_core.so!mkl_serv_unlock for the write description on the same code line. From the DGETRF call: -A, IPVT and info are threadprivate -adf is shared -mxxinj is declared as a parameter (so, shared by default, I think). I compile with:
-g -fno-alias -fpp -openmp -openmp-report -I$(MKLROOT)/include -align -zero -O3 -msse4 -simd -module $(OBJS_DIR) -cAnd link with:
-L$(MKLROOT)/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread -lmThe results I get when compared to compiling without openmp (sequential run) are the same. Any ideas welcome! Thanks in advance, Petros



