Working with Fortran
The tutorial assumes you have already worked through the Execute a Job Tutorial. Therefore, the instructions here are abbreviated but will follow the same format so you may easily consult the extended tutorial.
Table of Contents
📝 Note: Do not execute jobs on the login nodes; only use the login nodes to access your compute nodes. Processor-intensive, memory-intensive, or otherwise disruptive processes running on login nodes will be killed without warning.
Step 1: Access the Onyx HPC
Open a Bash terminal (or MobaXterm for Windows users).
Execute
ssh doaneusername@onyx.doane.edu
.When prompted, enter your password.
Step 2: Create an sbatch Script
Example sbatch Script
Here is an example sbatch script for running a batch job on an HPC like Onyx.
#!/bin/bash
#SBATCH -n 16
#SBATCH -o test_%A.out
#SBATCH --error test_%A.err
#SBATCH --mail-user $CHANGE_TO_YOUR_EMAIL
#SBATCH --mail-type ALL
module purge
module load gnu/5.4.0
module load openmpi
module list
mpirun hello_world_f
sbatch Procedure
Use nano or Vim (we use Vim here) to create and edit your sbatch script.
vim slurm_f90_example.job
Create your sbatch script within Vim by typing
i
forinsert
mode or paste the contents of your sbatch script into Vim.Save your file by typing
:wq!
and return to the Bash shell.
Step 3: Compile the Fortran Program from Source
MPI Hello World Source Code
program helloworld
use mpi
integer ierr, numprocs, procid
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, procid, ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, numprocs, ierr)
print *, "Hello world! I am process ", procid, "out of", numprocs, "!"
call MPI_FINALIZE(ierr)
stop
end
Fortran Procedure
Use Vim (
vim
) to create your Fortran source file.vim hello_world.f90
Save your file and return to the Bash shell.
Load the MPI compiler using the openmpi module.
module load openmpi
Compile the Fortran source into a binary executable file.
mpifort -o hello_world_f hello_world.f90
Use
ls -al
to verify the presence of thehello_world_f
binary in your working directory.
Step 4: Run the Job
Before proceeding, ensure that you are still in your working directory (using
pwd
) and that you still have the PE-gnu module loaded (usingmodule list
).We need to be in the same path/directory as our sbatch script and our Fortran binary. Use
ls -al
to confirm their presence.
Use
sbatch
to schedule your batch job in the queue.sbatch slurm_f90_example.job
This command will automatically queue your job using slurm and produce a job number. You can check the status of your job at any time with the
squeue
command.squeue --job <jobnumber>
You can also stop your job at any time with the
scancel
command.scancel --job <jobnumber>
View your results. You can view the contents of these files using the
less
command followed by the file name.less test_<jobnumber>.out
Your output should look something like this (the output is truncated.):
Hello world! I am process 3 out of 20 ! Hello world! I am process 0 out of 20 ! Hello world! I am process 1 out of 20 ! Hello world! I am process 7 out of 20 ! Hello world! I am process 8 out of 20 ! Hello world! I am process 2 out of 20 ! Hello world! I am process 6 out of 20 ! Hello world! I am process 11 out of 20 ! . . .
Download your results (using the
scp
command or an SFTP client) or move them to persistent storage. See our moving data section for help.
Additional Examples
Last updated