Logistics (5 minutes)

  • Project 1 is on CMS!
  • This week
    • Buddy check-in / mid-term evaluation
    • Small MPI demos
    • Getting set up on Graphite

Hello, Graphite (20 minutes)

You should all now have accounts on the CS Graphite cluster. The cluster includes both CPU and GPU nodes. If you already had Graphite access, you are keeping your own space; if not, a home directory has been created for you.

We will be using the cs5220 partition (the totient nodes) for CPU programming, and have a cs5220-gpu partition set up with a node with four NVidia 1080Ti GPUs. CUDA 10.1 is the default in /usr/local/cuda. We will start on the CPU nodes; we will be doing something with the GPUs later in the semester.

To access the cluster, you must be on the campus network (physically or via the CU VPN). You will access the cluster by logging into graphite-login.coecis.cornell.edu via SSH using your Cornell NetID and password. The login node can be used for compilation and light editing, but it is not intended to run big computational jobs. To run computational jobs, you should submit them to the SLURM workload manager by creating a submission script and queueing it with the sbatch command. In the meeting, we walked through two submission scripts: one for a “hello world” example in demos/graphite-hello, and one for an MPI ping-pong test example in demos/ping.

I recommend that you make sure you can log into Graphite and run the “hello world” program(s). Note that in order to compile the C version of the “hello world” program, you will need to first load the OpenMPI module (module load openmpi-4.0.0).

“Pair” programming a wave simulation (50 minutes)

After the introduction to Graphite, we sketched the numerical method introduced last week for solving the 1D wave equation. We then walked through a serial C driver code for running the time stepper (getopt-based argument parsing added after the meeting). We will pick up with MPI-based parallelization next time.