id,summary,reporter,owner,description,type,status,priority,resolution,keywords,cc,topic,difficulty,mentor
1618,Add NUMA-supporting features to GHC,acfoltzer,,"This ticket is an adaptation of [http://www.haskell.org/pipermail/glasgow-haskell-users/2012-March/022199.html Sajith Sasidharan's mailing list post].  

Broadly, idea is to improve support for NUMA systems.  Specifically:

 * '''Thread pinning''' Real physical processor affinity with [http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#v:forkOn forkOn]. We need to pin to specific CPUs if we want to.  (Currently, the number passed to forkOn is interpreted as number modulo the value returned by [http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#v:getNumCapabilities getNumCapabilities]).

 * '''Process pinning''': when launching processes, we might want to specify a list of CPUs rather than the number of CPUs, so that we can pin a process to a particular NUMA node.  Say, a -N [0,1,3] flag rather than -N 3 flag.
 
 * '''Memory locality''': From a very recent [http://groups.google.com/group/parallel-haskell/browse_thread/thread/7ec1ebc73dde8bbd discussion on parallel-haskell], we learned that there is a clear path to improving the storage manager's NUMA support. The hypothesis is that allocating ''node-local'' nurseries per Capability will improve performance over the bump-pointer approach in `allocate`.  We might use the NUMA-aware allocation primitives from the [http://www.open-mpi.org/projects/hwloc/ Portable Hardware Locality (hwloc)] library for this.

 * '''Logging and tracing''' Add NUMA-specific event logging and profiling information to support performance analysis and debugging of user-level NUMA-aware programs.

== Interested Mentors ==

 '''Needed'''! I ([acfoltzer@gmail.com Adam Foltzer]) know the outlines of the problems fairly well, but have no experience hacking on RTS code. I would be willing to take on a supporting role, but such experience seems necessary to mentor this project.

== Interested Students (Include enough identifying info to find/reach you!) ==

 * [sasasidh@indiana.edu Sajith Sasidharan] 
",proposed-project,new,not yet rated,,,rrnewton,GHC,1 person Summer,not-accepted
