Cisco Blogs

Lawrence Berkeley Labs talk: (Open) MPI, Parallel Computing, Life, the Universe, and Everything

- November 8, 2013 - 4 Comments

Many thanks to the crew at LBL for hosting my talks yesterday.  There were many insightful questions and comments throughout both talks.

Here’s the slides from my first talk, entitled “(Open) MPI, Parallel Computing, Life, the Universe, and Everything.”  This is a general MPI/Open MPI talk, where I discussed the current state of Open MPI, and then talked in detail about two of Open MPI’s newest features: the MPI-3 “MPI_T” tools interface, and Open MPI’s flexible process affinity system.

Some of the slides — particularly, those about the flexible affinity system — were also presented in Madrid at EuroMPI’13 a few months ago.

Here’s the video for my talk; the standalone slides are below:

Here’s the slides:


In an effort to keep conversations fresh, Cisco Blogs closes comments after 60 days. Please visit the Cisco Blogs hub page for the latest content.


  1. hi, I am interested in java OpenMPI, do you have other example, or link on this argument. On github there are only two example. An other question is: as you can send a String array. Thanks in advance for the responses!!

  2. Hi, at the moment we have not a string datatype because it is variable lenght. The string datatype would be good for an upper-level/higher-abstraction library... You can send an string array as in the following example: import mpi.*; public class StringArray { public static void main(String[] args) throws MPIException { MPI.Init(args); int rank = MPI.COMM_WORLD.getRank(); char buffer[] = new char[36]; if(rank == 0) { String[] array = { "Hello world!", "This is a bit tricky!" }; packStrings(array, buffer); MPI.COMM_WORLD.send(buffer, buffer.length, MPI.CHAR, 1, 0); } else if(rank == 1) { MPI.COMM_WORLD.recv(buffer, buffer.length, MPI.CHAR, 0, 0); String[] array = unpackStrings(buffer); for(String s : array) System.out.println(s); } MPI.Finalize(); } private static void packStrings(String[] array, char[] buffer) { int offset = 0; buffer[offset++] = (char)array.length; for(String s : array) { buffer[offset++] = (char)s.length(); s.getChars(0, s.length(), buffer, offset); offset += s.length(); } } private static String[] unpackStrings(char[] buffer) { int offset = 0, count = buffer[offset++]; String array[] = new String[count]; for(int i = 0; i < count; i++) { int length = buffer[offset++]; array[i] = new String(buffer, offset, length); offset += length; } return array; } } // StringArray

    • I had a suspicion that there wasn't a string datatype, and your answer confirm it. Thanks for the suggestion and for the example.

  3. Oscar Vega-Gisbert do you have some example for create and send struct data??