Multicore processing

LCG Workshop - 20080415

Peter Elmer - Princeton University

CMS - Multicore processing

Given that our processing problem is inherently embarassing parallel (on events) the transition from (multiple) single-core CPU's to (multiple) multi-core CPU's was more natural for us than for many other applications originally designed for single-core machines (e.g. video games and processing applications, other desktop applications). We simply run N copies on N cores as we ran N copies on N CPU's with minor tweaks to our WM systems, queue configurations, etc. At least for small numbers of cores this has permitted us to exploit all available cores at the > 90% level.

The purpose of this presentation is to summarize some (probably not all) of the possibilities we are considering for exploitation of multicore CPU's in some way which is different from how we do that today.

Since we use multicore CPU's today, what are the reasons why we might change something? We believe there are two:

Possible Changes

CMS has not done any specific work thus far on changing how we exploit multiple cores, although a number of possibilities have been discussed. In order of granularity:
  1. Modifications to put the calibrations, magnetic field, geometry into shared memory and used by multiple cmsRun applications
  2. Parallelization of event processing in multiple cmsRun worker threads
  3. Parallelization of module processing in multiple cmsRun worker threads
  4. Fine-grained (sub-module) threading to process on multiple cores
  5. Geant4 changes
  6. Localized I/O related changes

Conclusions and plans