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.
On this page, we will use a Makefile to automate the compiling of the C, C++, and Fortran programs. In our PBS script, we will send a command to the Makefile which will compile codes prior to submitting the job to MPI.
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.
If you need to request an allocation, see instructions here.
Open a Bash terminal (or PuTTY for Windows users).
ssh [email protected].
When prompted, enter your password.
Here is an example PBS script for running a batch job on a HPC allocation.
#!/bin/bash#PBS -N mpi_hello_world_make#PBS -M [email protected]#PBS -l nodes=1:ppn=16#PBS -l walltime=0:00:6:0#PBS -W group_list=group_name#PBS -A group#PBS -l qos=burst#PBS -Vmodule purgemodule load PE-gnumodule load pythonmodule listcd $PBS_O_WORKDIRpwdmake allecho "=================================="echo "Output of the MPI and C program"echo "=================================="mpirun hello_world_cecho "=================================="echo "Output of the MPI and C++ program"echo "==================================="mpirun hello_world_cppecho "====================================="echo "Output of the MPI and Fortran program"echo "====================================="mpirun hello_world_fecho "====================================="echo "Output of the MPI and Python program"echo "====================================="mpirun python hello_world.pyecho "============================="echo "Successful!!!... End of File"echo "============================="
From the login node, change your working directory to the desired file system. We are going to use our Lustre allocation for this example. If Lustre storage is not available, you may complete this tutorial from within your home directory on NFS.
Use Vi to create and edit your PBS script.
Create your PBS script within Vi or paste the contents of your PBS script into Vi.
Save your file and return to the Bash shell.
A makefile contains instructions for Make software to automate the build of programs and source codes.
This file must be located in the same path as the other source programs.
CC = mpiccCXX = mpic++FC = mpifortOPTFLAGS = -O3CFLAGS = $(OPTFLAGS) -gCXXFLAGS = $(OPTFLAGS) -gFFLAGS = $(OPTFLAGS) -gall:hello_world_c hello_world_cpp hello_world_fhello_world_c: hello_world.c$(CC) $(CFLAGS) -o hello_world_c hello_world.chello_world_cpp: hello_world.cpp$(CXX) $(CXXFLAGS) -o hello_world_cpp hello_world.cpphello_world_f: hello_world.f90$(FC) $(FFLAGS) -o hello_world_f hello_world.f90clean:rm hello_world_*
📝 Note: Indentations in a Makefile must be a
Tab and not
Ensure that you are still in your working directory (
Use Vi (
vi) to create your Makefile within your working directory.
Paste the hello world Makefile code into Vi.
Save your file and return to the Bash shell.
If you have been following along the tutorials in order, you will already have compiled programs for C, C++, and Fortran. However, if you did not already have compiled codes, the Makefile we have created here would compile all of them when we run our PBS script. In the
hello_world_make.pbs file, there is a line that says
make all. This command will run the contents of our Makefile, which will compile the C, C++, and Fortran programs prior to running the job.
Before proceeding, ensure that you are still in your working directory (using
pwd) and that you still have the PE-gnu and python/3.6.1 modules loaded (using
We need to be in the same path/directory as our PBS script and our Makefile. Use
ls -al to confirm their presence.
qsub to schedule your batch job in the queue.
This command will automatically queue your job using Torque and produce a six-digit job number (shown below).
You can check the status of your job at any time with the
You can also stop your job at any time with the
View your results.
You can view the contents of these files using the
more command followed by the file name.
Your output should look something like this (the output is truncated.):
Processor node ID=9 Hello worldProcessor node ID=4 Hello worldProcessor node ID=0 Hello worldProcessor node ID=1 Hello worldProcessor node ID=3 Hello worldProcessor node ID=5 Hello worldProcessor node ID=2 Hello worldProcessor node ID=6 Hello worldProcessor node ID=7 Hello worldProcessor node ID=8 Hello world...
Download your results (using the
scp command or an SFTP client) or move them to persistent storage. See our moving data section for help.