**Create a binding to the Hwloc library** <
> <> %|||% &|Areas| System/Machine Introspection |& &|Good if student knows | C, autoconf, Makefiles |& &|Priority| Low |& &|Difficulty| ??? |& &|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 multi-processing application or library 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'' <> <>