As an extension of Bayesian network, module network is an appropriate model for inferring causal network of a mass of variables from insufficient evidences. However learning such a model is still a time-consuming process. In this paper, we propose a parallel implementation of module network learning algorithm using OpenMP. We propose a static task partitioning strategy which distributes sub-search-spaces over worker threads to get the tradeoff between load-balance and software-cache-contention. To overcome performance penalties derived from shared-memory contention, we adopt several optimization techniques such as memory pre-allocation, memory alignment and static function usage. These optimizations have different patterns of influence on the sequential performance and the parallel speedup. Experiments validate the effectiveness of these optimizations. For a 2,200 nodes dataset, they enhance the parallel speedup up to 88%, together with a 2X sequential performance improvement. With resource contentions reduced, workload imbalance becomes the main hurdle to parallel scalability and the program behaviors more stable in various platforms.
[1]
David Heckerman,et al.
A Tutorial on Learning with Bayesian Networks
,
1999,
Innovations in Bayesian Networks.
[2]
Xiaojiang Xu,et al.
Learning module networks from genome‐wide location and expression data
,
2004,
FEBS letters.
[3]
David F. Bacon,et al.
Compiler transformations for high-performance computing
,
1994,
CSUR.
[4]
Wenguang Chen,et al.
Parallel module network learning on distributed memory multiprocessors
,
2005,
2005 International Conference on Parallel Processing Workshops (ICPPW'05).
[5]
Pradeep Dubey,et al.
Platform 2015: Intel ® Processor and Platform Evolution for the Next Decade
,
2005
.
[6]
Kathryn S. McKinley,et al.
Hoard: a scalable memory allocator for multithreaded applications
,
2000,
SIGP.
[7]
Kevin Murphy,et al.
A brief introduction to graphical models and bayesian networks
,
1998
.
[8]
Nir Friedman,et al.
Learning Module Networks
,
2002,
J. Mach. Learn. Res..