A tale of linker woes

I wanted to compile MADbench2, which is a program designed to test the interaction of I/O with communication in an HPC environment. It has some prerequisites such as Scalapack, Lapack and their prerequisites. I have root access on this particular cluster, so I was hoping I could just install a few precompiled packages and just…

Building OpenMPI

First step is to download the latest stable version from here: https://www.open-mpi.org/software/ompi/v4.0/ After opening the tarball, go into the directory and configure: ./configure –prefix=/opt/openmpi-4.X.X –enable-mpi1-compatibility Substitute X.X for the actual version being installed. This will allow you to have multiple versions of openmpi on a system, which may be needed for existing applications or research…

More on PMPI

Many scientific computing programs, including those using MPI, are coded in Fortran. PMPI wrappers coded in C can be used with these Fortran codes, but it’s a bit complicated because Fortran is case-sensitive and sometimes function names contain underscores not present in the C-equivalent. So a program might use mpi_send or __mpi_send, neither of which…

PMPI

MPI comes with a built-in interface for performing measurements and other actions during MPI calls. Here’s a quick tutorial on how it works: Create a file called wrap.c: #include <mpi.h>#include <stdio.h>double start, end;int ret;int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { start = MPI_Wtime();   ret = PMPI_Send(buf,…