**Create a binding to the Hwloc library**
<
>
<>
%|||%
&|Areas| System/Machine Introspection |&
&|Good if student knows | C, autoconf, Makefiles |&
&|Priority| Low |&
&|Difficulty| Medium |&
&|Benefits to the student| ??? |&
&|Benefits to the Tcl Community| While the direct benefit is to [CRIMP], this would be usable in all circumstances where a Tcl multi-processing application or package wishes to dynamically adapt itself to the execution environment and the available computing resources |&
&|Mentor| [Andreas Kupries], plus Jeff Squyres from the HWloc side |&
%|||%
***Project Description***
This is a larger idea spun out of [GSoC Idea: Extending CRIMP], notably the ticket "[http://chiselapp.com/user/andreas_kupries/repository/crimp/tktview?name=839d20d7c3%|%performance through parallelization / threading]". As a foundation for that we need some introspection into the machine Tcl runs on, i.e. number of processors, cores per processor, threads per core, etc. The [http://www.open-mpi.org/projects/hwloc/%|%HWloc] library, aka "Portable Hardware Locality" provides all this information, and more.
The student is expected to
* design a Tcl script API, i.e. a set of Tcl commands, which provide a script with the information collected by HWloc.
* implement this API,
* and create a TEA based buildsystem for the package. Options regarding the use of HWloc are
** Link pre-existing HWloc shared libraries
** Build the HWloc sources as part of the binding, i.e. make them integral to the package
** Dynamically link to HWloc libraries, using dlopen(), etc.
***References***
* http://www.open-mpi.org/projects/hwloc/
* TEA (link to come)
<>
'''Comments & Discussion'''
''Some comments here''
<>
<>