Create a binding to the Hwloc library.

George Andreou

Abstract

The goal of this project is to produce the necessary language extensions to facilitate programming of high-performance computing (HPC) applications in Tcl, and to better take advantage of modern hardware. In particular this project delivers: * A Tcl binding to HWloc using the TEA build system. * Comprehensive testing and examples. * Documentation. * Proper hosting.

Additional Information

HWloc is a C library to obtain a hierarchical map of key computing elements, such as: NUMA memory nodes, shared caches, processor sockets, processor cores, and processing units (logical processors or "threads"). HWloc also gathers various attributes such as cache and memory information. It can also be used to bind processes and threads to specific cpu/core and memory sockets. It is a portable library across a variety of different operating systems and platforms. HWloc primarily aims at helping high-performance computing (HPC) applications, but is also applicable to any project seeking to exploit code and/or data locality on modern computing platforms.

 

The goal of this project is to create a Tcl binding to the HWloc library, that adheres to Tcl's programming style. The work can be broken down to the following sub-tasks:

* Design a Tcl API, i.e. a set of Tcl commands, which provide a script with the information collected by HWloc.

* Implement this API,

* Create a TEA based build system for the package.

 

The outcome of the project will be:

1. A Tcl binding to HWloc in the form of a Tcl package. It must be cross-platform to the extend that Tcl and HWloc are.

2. A set of example Tcl scripts that demonstrate this binding.

3. Documentation in the form of man page(s).

4. A SourceForge project page.

 

References:

- HWloc: http://www.open-mpi.org/projects/hwloc

- TEA: http://www.tcl.tk/doc/tea/

- TCL C API: http://wiki.tcl.tk/14054

 

Code samples