A Dynamic Data Partition Algorithm Oriented to MPI and OpenMP1
Zhou Chen,Chen Zhenjie,Li Feixue
2013-01-01
Abstract:With the rapid increase of massive multi-dimensional spatial-temporal data, geocomputation has been increasingly data-intensive and computation-intensive. But nowadays, the existing geographical information system and traditional hardware have been unable to meet the demand of massive geocomputation. Fortunately, emergence of new hardware architecture, such as multi-core processors, has broken through the bottleneck of computation and data processing to some extent. And it opens up new avenues of research for geocomputation issues. So using parallel computing in complex geocomputation with massive data becomes an irreversible trend. As is well-known, MPI (Message Passing Interface) and OpenMP are the most popular programming models of parallel computing. MPI is the implementation standard based on message passing programming model, while OpenMP is an industry standard sharing the common storage. In a multiprocessor environment, MPI+OpenMP hybrid programming model can realize the design thought of modularization and improve effectively the performance of system. Runtime is an important indicator to evaluate the performance of parallel programs. Runtime of parallel programs are usually determined by the time that the slowest process takes. Generally, runtime of different processes will differ from each other because of different data complexity. In a multiprocessor system, the load unbalance phenomenon probably occurs, which will directly affect the performance, so it is necessary to implement load balancing in multiprocessor systems. In theory, load balancing means that the calculative processes will be distributed loads evenly so that nearly all processes tend to accomplish tasks at the same time, decreasing the longest runtime of the process, to improve overall performance of parallel programs. Load balancing algorithms can be classified into two types according to the basic principle: static load balancing algorithm and dynamic load balancing algorithm. Static algorithm has some drawbacks — poor realtime capability, blindness and low efficiency. By contrast, dynamic algorithm can balance load on each node according to the current status of the system.