Dear administrator,
I have some questions about Intel's Co-array Fortran for Windows. The most important thing I want to know is that how to configure the project to let it work on distributed machines.
The original thread is here:
http://software.intel.com/en-us/forums/showthread.php?t=61810&o=a&s=lr
Could you please help me to check my problem?
Thanks,
Zhanghong Tang
I have some questions about Intel's Co-array Fortran for Windows. The most important thing I want to know is that how to configure the project to let it work on distributed machines.
The original thread is here:
http://software.intel.com/en-us/forums/showthread.php?t=61810&o=a&s=lr
Could you please help me to check my problem?
Thanks,
Zhanghong Tang
链接已复制
16 回复数
Dear Dr. TimP,
Thank you very much for your introduction the Co-array Fortran. I tested a sample case (the attached file) and found that the output is not what I excepted. Could you please help me to check this problem?
In addition, could you please tell me how to configure the project if I wish to execute the program on two machines?
computer 1:
IP: 192.168.1.2
OS: Windows xp 32 bit
computer 2:
IP: 192.168.1.3
OS: Windows 7 64bit
Thanks,
Zhanghong Tang
Thank you very much for your introduction the Co-array Fortran. I tested a sample case (the attached file) and found that the output is not what I excepted. Could you please help me to check this problem?
In addition, could you please tell me how to configure the project if I wish to execute the program on two machines?
computer 1:
IP: 192.168.1.2
OS: Windows xp 32 bit
computer 2:
IP: 192.168.1.3
OS: Windows 7 64bit
Thanks,
Zhanghong Tang
I moved the posts here.
Please read Building and Running a Distributed Coarray Application on Windows. Note that you are required to have a Windows-based cluster running Windows HPC Server 2008 or Windows Compute Cluster Server 2003. plus a license for Intel Cluster Toolkit.
Furthermore, I don't think your program, even if it is run across the cluster, will do what you want regarding executing commands on the different nodes. I gather you are looking at Coarray Fortran as a way to run an otherwise normal application on multiple systems - that's not what it's designed for.
Please read Building and Running a Distributed Coarray Application on Windows. Note that you are required to have a Windows-based cluster running Windows HPC Server 2008 or Windows Compute Cluster Server 2003. plus a license for Intel Cluster Toolkit.
Furthermore, I don't think your program, even if it is run across the cluster, will do what you want regarding executing commands on the different nodes. I gather you are looking at Coarray Fortran as a way to run an otherwise normal application on multiple systems - that's not what it's designed for.
Dear Dr. Steve,
Thank you very much for your kindly reply. I guess the images of the application by Co-array Fortran will run at distributed machines, so I think it can launch the external programs at different machines. Isn't it?
On the other hand, since the Co-array Fortran is so powerful, I will consider to write pure Fortran code for distributed computation.
However, I wish the compute can be done by loose connected machine, i.e., the computers can have different windows OS versions, for example, windows xp and windows 7, instead of windows HPC server 2008. I only need to setup the configure file by IP address. Can I do like this?
By the way, the attached code still have some problem to run on my machine (the example can run correctly), could you please help me to check the problem?
Thanks,
Zhanghong Tang
Thank you very much for your kindly reply. I guess the images of the application by Co-array Fortran will run at distributed machines, so I think it can launch the external programs at different machines. Isn't it?
On the other hand, since the Co-array Fortran is so powerful, I will consider to write pure Fortran code for distributed computation.
However, I wish the compute can be done by loose connected machine, i.e., the computers can have different windows OS versions, for example, windows xp and windows 7, instead of windows HPC server 2008. I only need to setup the configure file by IP address. Can I do like this?
By the way, the attached code still have some problem to run on my machine (the example can run correctly), could you please help me to check the problem?
Thanks,
Zhanghong Tang
Distributed coarray applications must run in a cluster environment under the control of Intel MPI. There is no provision for running on random network-connected dissimilar systems.
Your program depends on a module not supplied, and you don't say what goes wrong. Since coarrays are not a solution to this problem, I suggest you look for another way of doing remote execution.
Your program depends on a module not supplied, and you don't say what goes wrong. Since coarrays are not a solution to this problem, I suggest you look for another way of doing remote execution.
Dear Dr. Steve,
Thank you very much for your kindly reply. Let's discuss the problem of my code at first.
The output of the program is as follows:
D:\tang\ansoft\logging\bjut307-PC\coarray\coarray_samples\Debug>coarray_samples.
exe
Hello from image 1 out of 8 total images
Hello from image 4 out of 8 total images
Hello from image 2 out of 8 total images
Hello from image 8 out of 8 total images
Hello from image 7 out of 8 total images
Hello from image 5 out of 8 total images
Hello from image 3 out of 8 total images
Hello from image 6 out of 8 total images
myid= 1
myid= 1 2
1 C:\Program Files (x86)\Ansoft\Maxwell14.0\maxwell.exe
1
-runscriptandexit "D:\tang\ansoft\logging\bjut307-PC\20111022\MIT5530_parallel\
project\MIT5530_1.vbs"
and then the program hangs there. From task manager I can found 9 progress of coarray_sample.exe, the CPU usage of one is 0 and others are 12%.
I wish the program have the following output:
Hello from image 1 out of 8 total images
Hello from image 4 out of 8 total images
Hello from image 2 out of 8 total images
Hello from image 8 out of 8 total images
Hello from image 7 out of 8 total images
Hello from image 5 out of 8 total images
Hello from image 3 out of 8 total images
Hello from image 6 out of 8 total images
myid= 1
myid= 3
myid= 2
myid= 4
myid= 6
myid= 5
myid= 7
myid= 8 (no necessary this order)
myid= 1 2
myid= 3 2
myid= 2 2
myid= 4 2
myid= 6 2
myid= 5 2
myid= 7 2
myid= 8 2 (no necessary this order)
1 C:\Program Files (x86)\Ansoft\Maxwell14.0\maxwell.exe
1
-runscriptandexit "D:\tang\ansoft\logging\bjut307-PC\20111022\MIT5530_parallel\
project\MIT5530_1.vbs"
2 C:\Program Files (x86)\Ansoft\Maxwell14.0\maxwell.exe
2
-runscriptandexit "D:\tang\ansoft\logging\bjut307-PC\20111022\MIT5530_parallel\
project\MIT5530_2.vbs" (no necessary this order)
And then the program exit successfully.
Could you please help me to check what lead to this problem? How to modify the code to let it has the above output?
Thanks,
Zhanghong Tang
Thank you very much for your kindly reply. Let's discuss the problem of my code at first.
The output of the program is as follows:
D:\tang\ansoft\logging\bjut307-PC\coarray\coarray_samples\Debug>coarray_samples.
exe
Hello from image 1 out of 8 total images
Hello from image 4 out of 8 total images
Hello from image 2 out of 8 total images
Hello from image 8 out of 8 total images
Hello from image 7 out of 8 total images
Hello from image 5 out of 8 total images
Hello from image 3 out of 8 total images
Hello from image 6 out of 8 total images
myid= 1
myid= 1 2
1 C:\Program Files (x86)\Ansoft\Maxwell14.0\maxwell.exe
1
-runscriptandexit "D:\tang\ansoft\logging\bjut307-PC\20111022\MIT5530_parallel\
project\MIT5530_1.vbs"
and then the program hangs there. From task manager I can found 9 progress of coarray_sample.exe, the CPU usage of one is 0 and others are 12%.
I wish the program have the following output:
Hello from image 1 out of 8 total images
Hello from image 4 out of 8 total images
Hello from image 2 out of 8 total images
Hello from image 8 out of 8 total images
Hello from image 7 out of 8 total images
Hello from image 5 out of 8 total images
Hello from image 3 out of 8 total images
Hello from image 6 out of 8 total images
myid= 1
myid= 3
myid= 2
myid= 4
myid= 6
myid= 5
myid= 7
myid= 8 (no necessary this order)
myid= 1 2
myid= 3 2
myid= 2 2
myid= 4 2
myid= 6 2
myid= 5 2
myid= 7 2
myid= 8 2 (no necessary this order)
1 C:\Program Files (x86)\Ansoft\Maxwell14.0\maxwell.exe
1
-runscriptandexit "D:\tang\ansoft\logging\bjut307-PC\20111022\MIT5530_parallel\
project\MIT5530_1.vbs"
2 C:\Program Files (x86)\Ansoft\Maxwell14.0\maxwell.exe
2
-runscriptandexit "D:\tang\ansoft\logging\bjut307-PC\20111022\MIT5530_parallel\
project\MIT5530_2.vbs" (no necessary this order)
And then the program exit successfully.
Could you please help me to check what lead to this problem? How to modify the code to let it has the above output?
Thanks,
Zhanghong Tang
I often find coarray processes doing what you observed when an error occurs. Unfortunately, debugging coarray applications, especially on Windows, is presently very difficult.
I will try to look at your program and see what I can figure out sometime next week.
I will try to look at your program and see what I can figure out sometime next week.
Steve should be able to check in with you later this week. He has been affected by the NE snowstorm so unable to reply.
------
Wendy
It will still be a few more days before I am able to try this. An unusual snowstorm on Oct. 29 knocked out power for a large region in the northeast US and things are not all back to normal yet. (In particular, my house is still without power and heat.) Your patience is appreciated.
Zhanghong,
Steve is on vacation this week, but should be back to respond next week.
I don't see any known issue linked to your thread so I would suspect this is is not fixed in the Update 8 compiler posting this week.
Zhanghong,
I don't think you can do what you want with coarrays. Doing things that cause the program to wait in the OS or sleep will prevent a coarray program from working properly. Also, I note that you want to use a mixed-architecture cluster. At a minimum you will need to build a 32-bit application to run on both 32-bit and 64-bit systems.
Do you actually have a Windows cluster configured using Windows HPC Server?
I suggest looking into alternate methods for spawning commands on multiple systems.
I don't think you can do what you want with coarrays. Doing things that cause the program to wait in the OS or sleep will prevent a coarray program from working properly. Also, I note that you want to use a mixed-architecture cluster. At a minimum you will need to build a 32-bit application to run on both 32-bit and 64-bit systems.
Do you actually have a Windows cluster configured using Windows HPC Server?
I suggest looking into alternate methods for spawning commands on multiple systems.
