1. A method comprising: in response to a command to convert a message passing interface (MPI) source code program to an MPI thread-based program: examining the MPI source code program to determine whether a first condition is present, wherein the first condition is associated with data in a blank common block having a first size when accessed by a first component of the MPI source code program and having a second size when accessed by a second component of the MPI source code program, wherein the first size differs from the second size; in response to determining that the first condition is present, rejecting the command to convert the MPI source code program; and in response to determining that the first condition is absent, performing, by a converter executed by a first processor: declaring a global variable of the MPI source code program as a thread private variable to create a first private variable for a first thread and a second private variable for a second thread; identifying a library to use to build an executable version of the MPI thread-based program; building the executable version of the MPI thread-based program using the identified library, wherein the identified library includes code that during execution of the MPI thread-based program is to perform: identify an access to a first file by the first thread; cause the first thread to access the first file through a first file handle; identify an access to the first file by the second thread; and cause the second thread to access the first file through a second file handle, wherein the second file handle is different from the first file handle; and transferring data from the first thread to the second thread by providing contents of the first private variable directly to the second thread during execution of the executable version of the MPI thread-based program on a second processor.