- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
I ran a simple COARRAY Fortran example on two Windows 10 machines with the same project files (so exactly the same compiler settings). However, the output is different on both machines as shown below. Is this expected behavior? Any help will be appreciated, especially with settings that need to be changed.
Computer 1: Intel i7 4770K, 16 GB RAM, Cores = 4, Threads = 8, special order through an engineering software provider
Computer 2: Intel i7 6820HQ, 32 GB RAM, Cores = 4, Threads = 8, special order directly from Dell
The program code is:
program main ! Test COARRAY Fortran 2008 if (this_image() == 1) then write(*,'(1x,a,1x,i0,1x,a)') 'Coarray Fortran program running with', num_images(), 'images' end if sync all write(*,'(1x,a,1x,i0)') 'Hello from image', this_image() if (this_image() == 1) read * 1 continue end program main
The output on Computer 1 is as advertised in the tutorial:
Coarray Fortran program running with 8 images
Hello from image 1
Hello from image 5
Hello from image 2
Hello from image 6
Hello from image 3
Hello from image 4
Hello from image 7
Hello from image 8
However, the output on Computer 2 is different as seen below and reports that only 1 image is used.
Coarray Fortran program running with 1 images
Hello from image 1
Coarray Fortran program running with 1 images
Hello from image 1
Coarray Fortran program running with 1 images
Hello from image 1
Coarray Fortran program running with 1 images
Hello from image 1
Coarray Fortran program running with 1 images
Hello from image 1
Coarray Fortran program running with 1 images
Hello from image 1
Coarray Fortran program running with 1 images
Hello from image 1
Coarray Fortran program running with 1 images
Hello from image 1
I will add that Computer 2 in general runs slower than Computer 1 on all Fortran applications although it is a newer and potentially superior computer.
링크가 복사됨
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
It would be interesting to see the value of the PATH environment variable in the context of the running program. You can add a call to GET_ENVIRONMENT_VARIABLE to fetch it (use a 2500 character variable to store the result) and print it.
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Steve:
You are not wrong about the co-array sample, it takes a while to figure out.
LOL -- we are all not perfect - except maybe mecej4 -- he is close
John
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Steve Lionel (Ret.) (Blackbelt) wrote:It would be interesting to see the value of the PATH environment variable in the context of the running program. You can add a call to GET_ENVIRONMENT_VARIABLE to fetch it (use a 2500 character variable to store the result) and print it.
The file is attached. The call was invoked several times, even for the image 1. Only one output is attached.
integer :: lc, info character(len = 5000) :: c if (this_image() == 1) then call get_environment_variable ('path', c, lc, info, .true.) write(*,*) info write(*,*) lc write(*,'(g0)') trim(c) read * end if
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Is that from a good run or a bad run? Do it both ways and compare. If you build from a command line environment, and you have the Cluster Edition, a different MPI runtime will be earlier in the list.
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
I also received an error the first time I tried to run the x64 version (see below). It eventually ran on the second try.
MPI startup(): I_MPI_SCALABLE_OPTIMIZATION environment variable is not supported. MPI startup(): To check the list of supported variables, use the impi_info utility or refer to https://software.intel.com/en-us/mpi-library/documentation/get-started. forrtl: severe (157): Program Exception - access violation In coarray image 1 Image PC Routine Line Source impi.dll 00007FF8530C0307 Unknown Unknown Unknown impi.dll 00007FF85305BB7E Unknown Unknown Unknown impi.dll 00007FF8529A29AC Unknown Unknown Unknown impi.dll 00007FF8529A21DC Unknown Unknown Unknown impi.dll 00007FF852C2C967 Unknown Unknown Unknown impi.dll 00007FF852C1BCD9 Unknown Unknown Unknown impi.dll 00007FF852ABAFCB Unknown Unknown Unknown libicaf.dll 00007FF86E13B329 Unknown Unknown Unknown libifcoremdd.dll 00007FF86DFB5856 Unknown Unknown Unknown coarray1.exe 00007FF76B05345D Unknown Unknown Unknown coarray1.exe 00007FF76B053974 Unknown Unknown Unknown coarray1.exe 00007FF76B05389E Unknown Unknown Unknown coarray1.exe 00007FF76B05375E Unknown Unknown Unknown coarray1.exe 00007FF76B0539E9 Unknown Unknown Unknown KERNEL32.DLL 00007FF8B2724034 Unknown Unknown Unknown ntdll.dll 00007FF8B2BF3691 Unknown Unknown Unknown Abort(0) on node 0 (rank 0 in comm 496): application called MPI_Abort(comm=0x84000003, 0) - process 0
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
IA32 doesn't work anymore for coarrays. Don't even try it.
