Software

As part of my research, I developped multiple pieces of software that are available as open source.

Some of them can be found on :

NumaMMa

NumaMMa is both a NUMA memory profiler/analyzer and a NUMA application execution engine. The profiler allows to run an application while gathering information about memory accesses. The analyzer visually reports information about the memory behavior of the application allowing to identify memory access patterns. Based on the results of the analyzer, the execution engine is capable of executing the application in an efficient way by allocating memory pages in a clever way. [www]

Number of memory accesses, by each thread, to the pages of main_flt_mem in NPB CG

Memory accesses over time, by each thread, to the pages of cvar_ in NPB LU

EZTrace

EZTrace is a tool that aims at generating automatically execution trace from HPC (High Performance Computing) programs. It generates execution trace files that can be interpreted by visualization tools such as ViTE. If you want to understand your application performance, just run it with EZTrace and use the ViTE (Visual Trace Explorer) open source tool to visualize the program behavior. [www]
sp-mz_A_16

Example of execution trace of a MPI+OpenMP program (generated with EZTrace)

GTG

Generic Trace Generator (GTG) aims at providing a simple and generic interface for generating execution traces in several formats (OTF, Paje, etc.) It is used by EZTrace and ViTE, but it can also be used by any application. [www]

PIOMan

During my PhD, I developped PIOMan in the PM2 software suite. PIOMan is a generic I/O manager, designed to deal with interactions between communication and multi-threading. It guarantees a good level of reactivity by working closely with the Marcel threads scheduler. It is able to automatically choose between active polling and blocking calls depending on the context, and may offload I/O requests to idle cores when availble to handle multiple requests in parallel and overlap communication and computation. [www]

NewMadeleine

NewMadeleine a communication library for high speed networks. NewMadeleine embeds an optimizing scheduler SchedOpt that targets applications with irregular, multi-flow communication schemes such as found in the increasingly common application conglomerates made of multiple programming environments and coupled pieces of code, for instance. SchedOpt itself is easily extensible through the concepts of optimization strategies (what to optimize for, what the optimization goal is) expressed in terms of tactics (how to optimize to reach the optimization goal). Tactics themselves are made of basic communication flows operations such as packet merging or reordering.

The communication library is fully multi-threaded through its close integration with PIOMan. It manages concurrent communication operations from multiple libraries and from multiple threads. Its MPI implementation Mad-MPI fully supports the MPI_THREAD_MULTIPLE multi-threading level. [www]