User Tools

Site Tools


howto:coarrayfortran

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
howto:coarrayfortran [2017/04/12 23:58]
ccrosby
howto:coarrayfortran [2021/12/09 16:42] (current)
Line 3: Line 3:
 Co-array Fortran allows the programmer to develop distributed memory parallel Fortran programs without having to use MPI explicitly.  Parallelisation is entirely contained within the Fortran language, using a PGAS (partitioned global address space) approach.  In practice, Co-array Fortran is conveniently implemented by using OpenCoarrays, which is an interface built on top of MPI. Co-array Fortran allows the programmer to develop distributed memory parallel Fortran programs without having to use MPI explicitly.  Parallelisation is entirely contained within the Fortran language, using a PGAS (partitioned global address space) approach.  In practice, Co-array Fortran is conveniently implemented by using OpenCoarrays, which is an interface built on top of MPI.
  
-**OpenCoarrays-1.8.4** has been installed in ''/apps/chpc/compmech/OpenCoarrays-1.8.4'' and is compiled using mpich-3.2 and gcc-6.2.0. A modules has been created so simply adding:+**OpenCoarrays-1.8.4** has been installed in ''/apps/chpc/compmech/OpenCoarrays-1.8.4'' and is compiled using mpich-3.2 and gcc-6.2.0. A module has been created so simply adding:
 <code> <code>
 module add chpc/compmech/OpenCoarrays/1.8.4 module add chpc/compmech/OpenCoarrays/1.8.4
 </code> </code>
  
-to your scripts will set up the appropriate paths to OpenCoarrays.  +to your scripts will set up the appropriate paths to OpenCoarrays-1.8.4.   
 + 
 + 
 +**OpenCoarrays-2.3.1** has been installed in ''/apps/chpc/compmech/OpenCoarrays-2.3.1'' and is compiled using mpich-3.3 and gcc-8.3.0. A module has been created so simply adding: 
 +<code> 
 +module add chpc/compmech/OpenCoarrays/2.3.1 
 +</code> 
 +to your scripts will set up the appropriate paths to OpenCoarrays-2.3.1.  
 + 
 +**OpenCoarrays-2.9.2** has been installed in ''/apps/chpc/compmech/OpenCoarrays-2.9.2'' and is compiled using mpich-3.3 and gcc-8.3.0. A module has been created so simply adding: 
 +<code> 
 +module add chpc/compmech/OpenCoarrays/2.3.1 
 +</code> 
 +to your scripts will set up the appropriate paths to OpenCoarrays-2.3.1.  
  
 Co-array programs are compiled using the ''caf'' wrapper, much like ''mpif90'' is used to compile MPI programs.  The compiled binary is then executed using the ''cafrun'' wrapper, similar to ''mpirun'' ''cafrun'' in this case takes the same command line options as the ''mpirun'' wrapper supplied by mpich.  Please bear in mind that mpich will not by default use the infiniband network.  To use the infiniband network, use the following syntax: Co-array programs are compiled using the ''caf'' wrapper, much like ''mpif90'' is used to compile MPI programs.  The compiled binary is then executed using the ''cafrun'' wrapper, similar to ''mpirun'' ''cafrun'' in this case takes the same command line options as the ''mpirun'' wrapper supplied by mpich.  Please bear in mind that mpich will not by default use the infiniband network.  To use the infiniband network, use the following syntax:
Line 17: Line 31:
 </code> </code>
  
-For what it's worth, mpich is aware of PBS, and will by default not only allocate images (Co-array speak for MPI's ranks) to the total number of MPI processes requested by qsub, but will also by default distribute them according the the PBS node allocation as contained in $PBS_NODEFILE.  The following syntax produces exactly the same output, if 2 full nodes were requested by qsub:+For what it's worth, mpich is aware of PBS, and will by default not only allocate images (Co-array speak for MPI's ranks) to the total number of MPI processes requested by qsub, but will also by default distribute them according to the PBS node allocation as contained in $PBS_NODEFILE.  The following syntax produces exactly the same output, if 2 full nodes were requested by qsub:
  
 <code> <code>
Line 23: Line 37:
 cafrun -iface ib0 ./hello cafrun -iface ib0 ./hello
 </code> </code>
 +
 +Please note that this will not necessarily work when using less than the full number of cores per node.  It is probably good practice to explicitly state the number of images and to provide a machinefile.
 + 
  
/app/dokuwiki/data/attic/howto/coarrayfortran.1492034288.txt.gz · Last modified: 2021/12/09 16:42 (external edit)