GSoC/GCI Archive
Google Code-in 2012 BRL-CAD

Investigate performance of setting thread affinity

completed by: Skriptkid

mentors: Sean

BRL-CAD's raytrace library (LIBRT) is pervasively multithreaded using routines defined in our basic utility library (LIBBU) for detecting an using multiple CPUs/cores/threads. On Linux, BSD, or Mac OS X, you can set the affinity of a process to stay on a processor.

This task involves making minor modifications to the LIBBU parallel interface using sched_setaffinity and/or pthread_attr_setaffinity_np (or similar affinity mechanism depending on the platform) and then evaluating the performance impact using our BRL-CAD Benchmark suite ('benchmark' command).

Code:

  • src/libbu/parallel.c
  • src/libbu/semaphore.c