Difference between revisions of "Programming/Fortran"
From HPC
m |
m |
||
| Line 74: | Line 74: | ||
[username@login01 ~]$ gfortran -o testFortran testFortran.f03 | [username@login01 ~]$ gfortran -o testFortran testFortran.f03 | ||
| + | </pre> | ||
| + | |||
| + | == Usage Examples == | ||
| + | |||
| + | == Batch example == | ||
| + | |||
| + | <pre style="background-color: #C8C8C8; color: black; border: 2px solid blue; font-family: monospace, sans-serif;"> | ||
| + | #!/bin/bash | ||
| + | |||
| + | #SBATCH -J openmpi-single-node | ||
| + | #SBATCH -N 1 | ||
| + | #SBATCH --ntasks-per-node 28 | ||
| + | #SBATCH -D /home/user/CODE_SAMPLES/OPENMP | ||
| + | #SBATCH -o %N.%j.%a.out | ||
| + | #SBATCH -e %N.%j.%a.err | ||
| + | #SBATCH -p compute | ||
| + | #SBATCH --exclusive | ||
| + | |||
| + | echo $SLURM_JOB_NODELIST | ||
| + | |||
| + | module purge | ||
| + | module load gcc/4.9.3 | ||
| + | |||
| + | export I_MPI_DEBUG=5 | ||
| + | export I_MPI_FABRICS=shm:tmi | ||
| + | export I_MPI_FALLBACK=no | ||
| + | |||
| + | /home/user/CODE_SAMPLES/OPENMP/demo | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | <pre style="background-color: black; color: white; border: 2px solid black; font-family: monospace, sans-serif;"> | ||
| + | [username@login01 ~]$ sbatch demo.job | ||
| + | Submitted batch job 239552 | ||
</pre> | </pre> | ||
| Line 79: | Line 113: | ||
* [http://www.tutorialspoint.com/fortran/ http://www.tutorialspoint.com/fortran/] | * [http://www.tutorialspoint.com/fortran/ http://www.tutorialspoint.com/fortran/] | ||
| − | * [ | + | * [https://en.wikipedia.org/wiki/OpenMP https://en.wikipedia.org/wiki/OpenMP] |
| − | * [ | + | * [http://www.openmp.org/ http://www.openmp.org/] |
| + | * [https://computing.llnl.gov/tutorials/openMP/ https://computing.llnl.gov/tutorials/openMP/] | ||
| + | |||
| + | |||
[[Category:Programming]] | [[Category:Programming]] | ||
Revision as of 14:02, 6 February 2017
Contents
Programming Details
Fortran (formerly FORTRAN, derived from Formula Translation) is a general-purpose, imperative programming language that is especially suited to numeric computation and scientific computing.
Programming example
Non Parallel Example
program variableTesting
implicit none
! declaring variables
integer :: total,average
complex :: cx
logical :: done
character(len=80) :: message ! a string of 80 characters
!assigning values
total = 20000
average = 1666
done = .true.
message = "A big Hello from HPC"
cx = (3.0, 5.0) ! cx = 3.0 + 5.0i
if (total .ge. average) then
print *, total, " greater or equal than average"
else
print *, total, " less than average"
endif
Print *, average
Print *, cx
Print *, done
Print *, message
end program variableTesting
Parallel Example (openMP)
program helloworld use omp_lib implicit none !$OMP PARALLEL !$OMP CRITICAL print *,'Hello from thread number',OMP_GET_THREAD_NUM() !$OMP END CRITICAL !$OMP END PARALLEL end program helloworld
Modules Available
The following modules are available:
- module load gcc/4.9.3 (GNU compiler)
- module load intel/compiler/64/2016.2.181 (Intel compiler)
Compilation
The program would be compiled in the following way, optional Intel compiler available too:
[username@login01 ~]$ module load gcc/4.9.3 [username@login01 ~]$ gfortran -o testFortran testFortran.f03
Usage Examples
Batch example
#!/bin/bash #SBATCH -J openmpi-single-node #SBATCH -N 1 #SBATCH --ntasks-per-node 28 #SBATCH -D /home/user/CODE_SAMPLES/OPENMP #SBATCH -o %N.%j.%a.out #SBATCH -e %N.%j.%a.err #SBATCH -p compute #SBATCH --exclusive echo $SLURM_JOB_NODELIST module purge module load gcc/4.9.3 export I_MPI_DEBUG=5 export I_MPI_FABRICS=shm:tmi export I_MPI_FALLBACK=no /home/user/CODE_SAMPLES/OPENMP/demo
[username@login01 ~]$ sbatch demo.job Submitted batch job 239552