An Object-Oriented Library For Shared-Memory Parallel Simulations

Philip Machanick · 2008

Programming shared-memory multiprocessor systems is becoming increasingly difficult as the gap between memory speed and processor speed increases. At the same time, this class of computer—based on standard microprocessors—is becoming increasingly common as an alternative to traditional mainframes and supercomputers. Programs that are not sympathetic to caches can perform poorly on such systems. Problems include false sharing (unrelated data in a cache block, resulting in coherence misses), inadequate blocking (processing data as often as possible before it moves out of the cache) and poor exploitation of prefetch (fetching data before it is needed). This research addresses the problem of accommodating changes in memory hierarchy cost and cache characteristics through an object-oriented C++ library called OOSH (Object-Oriented Library for Shared Memory). OOSH includes low-level allocators which pad and align objects to cache block boundaries, and primitives for launching processes, locking and synchronization. OOSH also provides support for object blocking—an object-oriented version of blocking, a technique traditionally used

Read the paper · More papers on PaperTik