CN104461467B - The method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems - Google Patents
The method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems Download PDFInfo
- Publication number
- CN104461467B CN104461467B CN201310442102.4A CN201310442102A CN104461467B CN 104461467 B CN104461467 B CN 104461467B CN 201310442102 A CN201310442102 A CN 201310442102A CN 104461467 B CN104461467 B CN 104461467B
- Authority
- CN
- China
- Prior art keywords
- mpi
- openmp
- calculate
- parallel
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 102
- 230000008569 process Effects 0.000 claims abstract description 53
- 239000013598 vector Substances 0.000 claims abstract description 43
- 239000011159 matrix material Substances 0.000 claims abstract description 34
- 238000004364 calculation method Methods 0.000 claims abstract description 33
- 230000004888 barrier function Effects 0.000 claims abstract description 30
- 238000002939 conjugate gradient method Methods 0.000 claims abstract description 25
- 230000005540 biological transmission Effects 0.000 claims abstract description 11
- 230000009467 reduction Effects 0.000 claims abstract description 11
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 6
- 230000000977 initiatory effect Effects 0.000 claims abstract description 5
- 230000015654 memory Effects 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 28
- 241001229889 Metis Species 0.000 claims description 2
- 230000001351 cycling effect Effects 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000021615 conjugation Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012679 convergent method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 235000015096 spirit Nutrition 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Abstract
The invention discloses a kind of method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems, according to the MPI that can be determined to call with CPU core number in calculate node number and node into number of passes and OpenMP Thread Counts;Each process reads in existing sub- sparse matrix, sub- initial vector, block vector sum max calculation tolerance;Each process opens multithreading compiling instruction;The cycle calculations of Conjugate Gradient Method With Preconditioning are carried out in each process, only three, the OpenMP grid barrier in cycle calculations;If the error calculated is less than permissible value, circulation terminates, otherwise continues cycling through;The result of calculation of each process of reduction, exports the solution of problem;During parallel computation, MPI process initiations first carry out problem multi-process decomposition, and parallel between start node, each MPI processes are assigned in a calculate node, and information is exchanged using message transmission between process;Then in each MPI processes, guidanceed command using OpenMP and create one group of thread, and be assigned on the different processor of calculate node and perform parallel.
Description
Technical field
The present invention relates to a kind of parallel computing, specifically, is related to the side that a kind of parallel computation improves calculating speed
Method.
Background technology
Iterative method is to solve the main stream approach of large scale sparse linear equations at present, the pre-conditional conjugate gradient in iterative method
Method is that the iterations of conjugate gradient method is reduced by preconditioning technique, and can accelerate a kind of convergent method, in engineering and section
Learn and be widely used in calculating.The method that conjugate gradient method is to solve for the numerical solution of specific linear system, coefficient therein
Matrix is symmetrical and positive definite real number battle array.With the raising of the scale and complexity of scientific and engineering problem, serial conjugation ladder
Degree method has been difficult to meet the requirement of solution scale and speed to sparse linear systems.
Due to serial computing existing bottleneck in itself, when calculation amount is relatively large, the performance of computer in itself will be made significantly
About its efficiency to calculate.Conjugate gradient method is calculated using serial approach in the prior art, only in processing Sparse Matrix-Vector
Take the opportunity and just enable MPI, parallel computation is realized by calculating piecemeal sparse matrix and the product of piecemeal vector on each node.But altogether
Yoke gradient method multiplies except Sparse Matrix-Vector, and the sum of products for also having multiple vectors and vector, scalar and vector is summed, and linearly
The calculation procedures such as solving equations, these calculating are still calculated using serial approach, it is impossible to greatest extent that algorithm is excellent parallel
Change.For the SMP group systems of distributed and shared storage organization mixing, it is difficult to make full use of computing resource, lift its meter
Calculate speed.
The content of the invention
Meter is improved using MPI and OpenMP hybrid parallels for SMP group systems it is an object of the invention to provide one kind
The method for calculating speed, by using the advantage of cluster and multi-core platform, lifts the calculating speed of conjugate gradient method, meets to dilute
The solution scale of paucicostellae sexual system and the requirement of speed.
To achieve these goals, the technical solution adopted in the present invention is as follows:
A kind of method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems, including it is following
Step:
(1)Calculate and prepare
a)Start MPI multi-process to calculate, wherein being less than or equal to available calculate node number into number of passes;
b)Each process reads in sub- sparse matrix A, sub- initial vector x0, block vector b and max calculation tolerance
Tolerance, sub- sparse matrix A, sub- initial vector x0It is the computational domain by mesh generation software partition problem with block vector b
After generate;
(2)Start the parallel cycle calculations of the MPI+OpenMP of Conjugate Gradient Method With Preconditioning
1)According to initial value x0, calculate r=b-Ax0;
2)P=M-1r;
3)ρ=rTp;
4)Each process opens the compiling instruction of OpenMP multithreadings, and wherein Thread Count is residing less than or equal to the thread calculates
Node can use CPU core number:
#pragmaompparallel/* start OpenMP threads */
5)Fori=1,2 .../* start the cycle over */
6)#pragmaompparallelforreduction(+:α){
7)Q=Ap/* Sparse Matrix-Vectors multiply */
Wherein, following steps are specifically included:
1. multithreads computing row circulates:By row order, i is recycled to sparse matrix last column from 0.Wherein:
A) data of sub- the i-th rows of sparse matrix A are read in advance, are stored in vectorial tmp;
B) j is recycled to the ending of the i-th row nonzero value from 0.Wherein:
The column index of i.k=j-th of nonzero value of the i-th row;
ii.q[k]=tmp[j]*+q[k]。
2. MPI non-blocking communications exchange the q of each node.
8)α=pTQ/* inner product of vectors */
9)}
10)α=ρ/α
11)ρold=ρ
12)#pragmaompparallelforreduction(+:ρ,error){
13)X=x+ α p/* AXPY*/
14)R=r- α q/* AXPY*/
15)Q=M-1R/* inner product of vectors */
16)Q=rTQ/* inner product of vectors */
17)Error=rTR/* inner product of vectors */
18)}
19)β=ρ/ρold
20)#pragmaompparallelfornowait { p=q+ β p }/* AXPY*/
21)#pragmaompsingle{MPI_Allgather(error);
22) If(error<tolerance)break}
23)}/* terminate for circulation and OpenMP multithreadings calculate */
(3)Final calculation result is obtained after the result of calculation reduction of each calculate node.
During parallel computation, MPI process initiations first carry out problem multi-process decomposition, parallel between start node, each
MPI processes are assigned in a calculate node, and information is exchanged using message transmission between process;Then in each MPI processes,
Guidanceed command using OpenMP and create one group of thread, and be assigned on the different processor of calculate node and perform parallel.
Further, the mesh generation software can be Metis or ParMetis.
Further, MPI multi-process is opened to calculate and after OpenMP multithreadings calculate, can be directed to multinuclear SMP clusters multinuclear,
The hardware resource characteristic of multinode, realizes that the two-stage between calculate node and in calculate node is parallel.
Further, in parallel computation implementation procedure, between calculate node(I.e. between process)Communicated by MPI message transmission modes
Data, in calculate node(I.e. in process)Data sharing is realized by the shared drive mode of OpenMP sets of threads.
Further, the storage format of each sub- sparse matrix is CSR.
Further, in parallel computation implementation procedure, the memory space that can be accessed is divided into tertiary storage space, Process flowchart
The globally shared first order memory space of processor, sets of threads shares second level memory space, and the privately owned third level storage of thread is empty
Between.
Further, there was only the 6th in the cycle calculations parallel MPI+OpenMP of Conjugate Gradient Method With Preconditioning)、12)With 21)
There are OpenMP grid barrier, each thread calculates to be needed to wait all threads calculating to arrive this step ability this three step when to OpenMP grid hindering
Carry out the calculating of next step.
Compared with prior art, the present invention has merged the advantages of Message-Passing Model and multithreaded programming model, more
The interaction between each processor in each calculate node is solved well, makes full use of computing resource, reduces the OpenMP in algorithm
Grid hinder number, reduce the synchronization during multithreading calculates, and improve the calculating speed of Conjugate Gradient Method With Preconditioning.
Brief description of the drawings
Fig. 1 is the programming mode schematic diagram of the present invention;
Fig. 2 is the process step schematic diagram of the present invention;
Fig. 3 is the schematic diagram that the Sparse Matrix-Vector of the present invention multiplies.
Embodiment
The present invention is mixed simultaneously for SMP group systems using MPI and OpenMP with specific embodiment below in conjunction with the accompanying drawings
The method that row improves calculating speed is described further.
High-performance computer(HPC)It can be divided into shared storage organization and distribution two major class of storage organization by its storage organization.
The unified memory headroom of distributed memory system neither one, one or more of processors and their memory headroom structure
The system independent into one, multiple systems are controlled by an operating system, can be with independent operating.Each system is called node, this
A little nodes are connected with each other using network interface to communicate.Shared storage system is mostly symmetrical shared storage architecture,
It is called symmetric multiprocessor structure(SymmetricMulti-Processing, SMP).Multiple CPU symmetrically work in server,
Without primary and secondary or subordinate relation.Each CPU shares identical physical memory, the time required to each CPU accesses any address in memory
It is identical, therefore SMP is also referred to as consistent memory access structure (UMA, UniformMemoryAccess).SMP clusters system
System can regard the set of both internal storage structures as, it is by possessing between the SMP node of multiple processors and each node of connection
Express network forms a set of multi-level architecture.SMP clusters are the good autgmentability for being distributed formula node system, are also supported shared
The data sharing of formula storage system.Therefore the high-performance computer currently using SMP clusters as representative is quickly grown, and becomes high-performance
The mainstream of computer realm.
The high-performance computer of different storage organizations has corresponding parallel programming model, and one of which is to be based on message transmission
Model, is generally used for distributed storage architecture, it can also be used to shared storage organization.By by calculating task or data according to
Divided into number of passes, exchange information by transmitting message between each performing parallel for task, coordinate paces, control execution.Its
In, MPI(Messagepassinginterface it is) to develop the industry that the concurrent program based on Message-Passing Model is formulated
Standard.Another kind is the multithreaded programming model based on shared storage.OpenMP is shared memory parallel programming therein
Typical method, the compiling guidance sentence of description parallel regions can be provided and hide related parallel thread create and management it is thin
Section, is that a kind of can explicitly instruct the parallel application programming interface of multithreading, shared drive(API).OpenMP has standardized
Fine-grained concurrency, while also support the concurrency of coarseness.
The present invention uses MPI and OpenMP Hybrid paradigms, and distributed storage programming model MPl, shared storage are compiled
Journey model OpenMP is combined, the characteristics of making full use of SMP cluster level memory structures.MPI and the OpenMP mixing of the present invention
The hierarchical structure that programming model has represents parallel between node for the MPI on upper strata, the OpenMP of lower floor represent it is in node and
OK.MPI the and OpenMP Hybrid paradigms of the present invention are based on following theoretical distribution model:MPI points are carried out to problem first
Solution, divides a task into the not intensive several parts that communicate, is each partially distributed on a SMP node (i.e. a process),
Communicated between node by message transmission;Then OpenMP compiling guidance sentences are added to divide the part on each node again
Solution, and be assigned on the different processor of SMP and performed by multiple thread parallels, communicated in node by shared storage.MPI
And OpenMP Hybrid paradigms provide the two-stage parallel mechanism between node and in node, combine the coarseness of process level simultaneously
OK) and circulation level fine grained parallel.
Group system is the tool that is formed by one group of computer system (node) by high performance network or local area network interconnection
There are High Availabitity, high-performance, the computer cluster of enhanced scalability of single system mapping.Operate in it is in cluster system and
Its calculating task is divided into some parallel subtasks by line program, and is distributed to each calculate node and performed.According to simultaneously stroke
Sequence algorithm demand, there are orderpreserving relation between some subtasks, it is therefore desirable to synchronizes processing.
Grid barrier (Barrier) is one kind of synchronization mechanism, is widely used in cluster system.Barrier operations are parallel
The synchronous point of program, after concurrent program will wait all calculate nodes participated all to reach this synchronous point, could perform
Subsequent operation.All calculate nodes of a calculating task are completed jointly, by certain topological network, are interconnected and form one and are being patrolled
There are the Barrier trees of root on volume.Just stop performing other after the calculate node in Barrier trees reaches Barrier synchronous points
Operation, until all calculate nodes that it is notified in Barrier trees have all reached synchronous point, Barrier is synchronously completed, and is calculated
Node can continue with other tasks.The time that Barrier is synchronously completed depends on last in Barrier trees and reaches
The calculate node of Barrier synchronous points, the delay of Barrier synchronizations are defined as reaching Barrier from last calculate node
Synchronous point all calculate nodes into Barrier trees are all informed to Barrier and synchronously complete the required time.Receiving
Before Barrier completion notices, all calculate nodes advanceed to up to Barrier synchronous points are at free time etc. in Barrier trees
Treat state, reduce the performance of parallel system, thus reduce Barrier synchronizing relays have to the performance for improving parallel system it is important
Effect.
It is existing as follows using the Conjugate Gradient Method With Preconditioning derivation algorithm of MPI and OpenMP Hybrid paradigms:
(1)Calculate and prepare
A) start MPI multi-process to calculate, wherein being less than or equal to available calculate node number into number of passes.
B) each process reads in sub- sparse matrix A, sub- initial vector x0, block vector b and max calculation tolerance
Tolerance, sub- sparse matrix A, sub- initial vector x0It is the computational domain by mesh generation software partition problem with block vector b
To be generated after sub- computational domain.
(2)Start the parallel cycle calculations of the MPI+OpenMP of Conjugate Gradient Method With Preconditioning
1)According to initial value x0, calculate r=b-Ax0。
2)Each process opens the compiling instruction of OpenMP multithreadings, and wherein Thread Count is residing less than or equal to the thread calculates
Node can use CPU core number.
3)Start fori=1,2 ... circulation.
4)#pragmaompfor instruction multithreads computings z=M-1r。
5)#pragmaompfor instruction multithreads computings ρi-1=rTz。
6) #pragmaompsingle instructs single thread to carry out MPI communications, and MPI_Allreduce functions reduction respectively calculates section
The ρ of pointi-1。
7)ifi=1β=0elseβ=ρi-1/ρi-2。
8) #pragmaompfor instructs multithreads computing p=z+ β p.
9) #pragmaompfor instructs multithreads computing q=Ap.
10)#pragmaompfor instruction multithreads computings α=ρi-1/pTq。
11)#pragmaompreduction instruction multithreads computing x=x+ α p.
12)#pragmaompreduction instruction multithreads computing r=r- α q.
13)#pragmaompsingle instruction single threads carry out the norm of each calculate node r of MPI_Allreduce reduction.
14)If, loop iteration terminate;elsegoto3).
15) end/* terminate for circulation and OpenMP multithreadings calculate */.
(3)Final calculation result is obtained after the result of calculation x reduction of each calculate node, obtains final system of linear equations
X is solved, exports linear solution of equations x.
As can be seen that above-mentioned algorithm shares the #pragmaomp instructions of 9 step OpenMP, each step has OpenMP grid barrier
(Barrier), program has to wait for all threads and all reaches same grid barrier could carrying out next step.If each thread calculation amount is not
Equally, each thread cannot reach grid barrier at the same time, and program, which performs, to be delayed significantly.So optimization algorithm, reduces OpenMP grid barrier
Computational efficiency will be improved.
The present invention by will be arranged to thread local variable, global communication can be eliminated, such thread goes to sum
Without waiting for other threads during assignment, it can directly perform and calculate in next step, therefore reduce OpenMP grid barrier.
The invention discloses a kind of side that calculating speed is improved based on the parallel computation of MPI and OpenMP Hybrid paradigms
Method, comprises the following steps:
According to the MPI that can be determined to call with CPU core number in calculate node number and node into number of passes and OpenMP threads
Number;Each process reads in existing sub- sparse matrix A, sub- initial vector x0With block vector b and max calculation tolerance Tolerance;
Each process opens multithreading compiling instruction;The cycle calculations of Conjugate Gradient Method With Preconditioning are carried out in each process;If calculate
Error be less than permissible value, circulation terminates, and otherwise continues cycling through calculating;The result of calculation of each process of reduction, exports problem
Solution;During parallel computation, MPI process initiations first carry out problem multi-process decomposition, parallel between start node, each MPI into
Journey is assigned in a calculate node, and information is exchanged using message transmission between process;Then in each MPI processes, use
OpenMP, which is guidanceed command, creates one group of thread, and is assigned on the different processor of calculate node and performs parallel.
When opening multithreading, each openable Thread Count of process is less than or equal to the available processors number of the process.Often
The storage format of one sub- sparse matrix is CSR(CompressedSparseRow).Wherein, program is calculated in pre-conditional conjugate gradient
Method circulation is dynamically determined available thread number before starting, and opens OpenMP multithreadings, calls as needed in the circulating cycle different
OpenMP multithreadings instruct, such as instruction of for recursion instructions, reduction, single instructions.In parallel computation implementation procedure,
The memory space that can be accessed is divided into tertiary storage space:The globally shared first order storage of multi-core microprocessor of Process flowchart is empty
Between, sets of threads shares second level memory space, the privately owned third level memory space of thread.The second level memory space that sets of threads is shared
Created before conjugate gradient circulates, using the variable space in current preconditioned conjugate gradient method function as the shared of sets of threads
Second level memory space, the per thread in sets of threads can access this space, but other sets of threads cannot access.Together
When, per thread can be allocated a privately owned third level memory space that only thread could access, which has
The identical life cycle of affiliated thread.
Embodiment one
The present embodiment uses the method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems
Solve extensive system of linear equations.Conjugate Gradient Method With Preconditioning is to solve for the iteration of symmetric positive definite sparse matrix system of linear equations
Method, is widely used in engineering and scientific algorithm, its algorithm is as follows:
Take x(0)∈Rn, calculate r(0)=b-Ax(0), make p(0)=r (0)
To k=0,1,2 ..., calculate
x(k+1)=x(k+1)+αkp(k)
r(k+1)=b-Ax(k+1)=r(k)-αkAp(k)
IfThen export x ' ≡ x(k+1), stop calculating.Otherwise,
p(k+1)=r(k+1)+βkp(k)
Wherein, in heavy construction and computational problem, x is the vector of demand solution, and b is known vector, and A is coefficient matrix,
It typically is Large sparse matrix.Sparse matrix refers to that nonzero value accounts for the matrix of the minimum ratio of matrix(Typically smaller than 1%), it is big absolutely
Partial value is zero.Sparse matrix storage method is CompressedSparseRow (CSR) form, it uses 3 array representations one
A dimension is m × n, the sparse matrix containing nnz non-zero entry:Array val and array colval preserve each non-zero entry respectively
Value and train value, array rowptr preserve every index position of first non-zero entry of row in val or colval.The present invention adopts
With MPI and OpenMP Hybrid paradigms, allow Conjugate Gradient Method With Preconditioning can be more in the SMP group systems of multinuclear multinode
The characteristic of SMP clusters is utilized well, realizes the lifting of calculating speed.
Referring to Fig. 2, using the side for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems
When method solves extensive system of linear equations, including:
Start MPI multi-process to calculate, wherein being less than or equal to available calculate node number into number of passes.
Each process reads in existing sub- sparse matrix A, sub- initial vector x0, block vector b and max calculation tolerance
Tolerance, sub- sparse matrix A, sub- initial vector x0It is by mesh generation software Metis or ParMetis with block vector b
The computational domain of partition problem be sub- computational domain after generate.Certainly, the present invention is not limited thereto, in other embodiments, the net
Lattice division software is alternatively other.
The parameter r of each process initialization Conjugate Gradient Method With Preconditioning function(0)And p(0)。
Each process opens the compiling instruction of OpenMP multithreadings, and wherein Thread Count is residing less than or equal to the thread calculates section
Point can use CPU core number.
Start the parallel cycle calculations of the MPI+OpenMP of Conjugate Gradient Method With Preconditioning.
If the error calculated is less than permissible value, circulation terminates, and otherwise continues cycling through calculating.
The result of calculation of each process of MPI_Allreduce function reduction, obtains the solution x of final system of linear equations, defeated
The solution x of linear equation group.
During parallel computation, MPI process initiations first carry out problem multi-process decomposition, parallel between start node, each
MPI processes are assigned in a calculate node, and information is exchanged using message transmission between process;Then in each MPI processes,
Guidanceed command using OpenMP and create one group of thread, and be assigned on the different processor of calculate node and perform parallel.Program exists
Circulation is dynamically determined available thread number before starting, open OpenMP multithreadings, call different OpenMP as needed in the circulating cycle
Multithreading instructs.
Conjugate Gradient Method With Preconditioning pseudocode is as follows in the present embodiment:
According to initial value x(0), calculate r(0)=b-Ax(0)
fori=1,2,…
solveMz(i-1)=r(i-1)
ifi=1
p(1)=z(0)
else
βi-1=ρi-1/ρi-2
p(i)=z(i-1)+βi-1p(i-1)
endif
q(i)=Ap(i)
αi=ρi-1/p(i)Tq(i)
x(i)=x(i-1)+αip(i)
r(i)=r(i-1)-αiq(i)
Until convergence, loop iteration terminates
end
Wherein M-1It is fore condition, is the inverse of matrix A.For matrix A, if there is matrix B so that AB+BA=I, wherein
I is unit matrix.Then B is referred to as the inverse matrix of A, is denoted as A-1。
Referring to Fig. 1, the present invention MPI and OpenMP Hybrid paradigms programming mode as shown in the figure, MPI first into
Cheng Qidong, to problem progress multi-process decomposition, parallel between start node, each MPI processes are assigned to a calculate node
On, between process information is exchanged using message transmission;Then in each MPI processes, one group of establishment is guidanceed command using OpenMP
Thread, and be assigned on the different processor of calculate node and perform parallel.Program starts in preconditioned conjugate gradient method circulation
Before be dynamically determined available thread number, open OpenMP multithreadings, call different OpenMP multithreadings to refer to as needed in the circulating cycle
Order, such as recursion instructions, reduction instruction, single instructions.
For the present invention in parallel computation implementation procedure, the memory space that can be accessed is divided into tertiary storage space:Into program-controlled
The globally shared first order memory space of multi-core microprocessor of system, sets of threads share second level memory space, thread the privately owned 3rd
Level memory space.The second level memory space that sets of threads is shared creates before conjugate gradient circulates, and current fore condition is conjugated ladder
Spend shared second level memory space of the variable space as sets of threads in algorithmic function, the equal energy of per thread in sets of threads
This space is accessed, but other sets of threads cannot access.Meanwhile per thread can be allocated an only thread and could access
Privately owned third level memory space, the memory space have the identical life cycle of affiliated thread.
Please refer to Fig.1, Fig. 2 and Fig. 3, the present embodiment are comprised the following steps that:
(1)Calculate and prepare
A) start MPI multi-process to calculate, wherein being less than or equal to available calculate node number into number of passes.
B) each process reads in sub- sparse matrix A, sub- initial vector x0, block vector b and max calculation tolerance
Tolerance, sub- sparse matrix A, sub- initial vector x0It is by mesh generation software Metis or ParMetis with block vector b
The computational domain of partition problem be sub- computational domain after generate.
(2)Start the cycle calculations of the MPI+OpenMP hybrid parallels of Conjugate Gradient Method With Preconditioning
1)According to initial value x0, calculate r=b-Ax0。
2) p=M-1r。
3)ρ=rTp。
4)Each process opens the compiling instruction of OpenMP multithreadings, and wherein Thread Count is residing less than or equal to the thread calculates
Node can use CPU core number:
#pragmaompparallel/* start OpenMP threads */
5)Fori=1,2 .../* start the cycle over */
6)#pragmaompparallelforreduction(+:α){
7)Q=Ap/* Sparse Matrix-Vectors multiply */
Wherein, following steps are specifically included:
1. multithreads computing row circulates:By row order, i is recycled to sparse matrix last column from 0.Wherein:
A) data of sub- the i-th rows of sparse matrix A are read in advance, are stored in vectorial tmp;
B) j is recycled to the ending of the i-th row nonzero value from 0.Wherein:
The column index of i.k=j-th of nonzero value of the i-th row;
ii.q[k]=tmp[j]*p[k]+q[k]。
2. MPI non-blocking communications exchange the q of each node.
8)α=pTQ/* inner product of vectors */
9)}
10)α=ρ/α
11)ρold=ρ
12)#pragmaompparallelforreduction(+:ρ,error){
13)X=x+ α p/*AXPY*/
14)R=r- α q/* AXPY*/
15)Q=M-1R/* inner product of vectors */
16)Q=rTQ/* inner product of vectors */
17)Error=rTR/* inner product of vectors */
18)}
19)β=ρ/ρold
20)#pragmaompparallelfornowait { p=q+ β p }/* AXPY*/
21)#pragmaompsingle{MPI_Allgather(error);
22) If(error<tolerance)break}
23)}/* terminate for circulation and OpenMP multithreadings calculate */
(3)Final calculation result is obtained after the result of calculation x reduction of each calculate node, obtains final system of linear equations
X is solved, exports linear solution of equations x.
The only the 6th in the cycle calculations parallel MPI+OpenMP of Conjugate Gradient Method With Preconditioning of the present invention)、12)With 21)This
Three steps there are OpenMP grid barrier, each thread calculate need to wait when to OpenMP grid hinder all threads calculate arrive this step could be into
The calculating of row next step, synchronization of other cycle calculations steps without waiting for other threads.
Present invention optimizes traditional preconditioned conjugate gradient method, reduces the OpenMP grid barrier number in algorithm, reduces
Synchronization in multithreading calculating, therefore can be in the raising computational efficiency on multinuclear multinode supercomputer, when shortening calculating
Between;New algorithm reduces a variable at the same time, this can also improve data reading performance using redundancy in cache.
The coarseness that the present invention is handled by Message-Passing Model between multi-process communicates, and multithreaded programming model energy
Lightweight thread is provided, preferably solves the interaction between each processor in each calculate node, is made full use of based on distribution
The advantages of Message-Passing Model of storage and multithreaded programming model based on shared storage.
The MPI+OpenMP hybrid parallels model of the present invention can access the message transmission replaced between node by shared drive,
Reduce the expense of data communication.
Since the data reading performance using redundancy of shared drive is higher than the data transfer between different memories, at same number
In the case of managing device, the data reading performance using redundancy of MPI+OpenMP hybrid parallel models is higher than the efficiency of MPI models, and the present invention uses
MPI+OpenMP hybrid parallels model can improve data reading performance using redundancy.
OpenMP parallel models cannot be enlarged beyond computer-internal processor number, and MPI models are in the increase of process number
When, parallel performance can be reduced because of the increase of messaging overhead, and the MPI+OpenMP hybrid parallels model of the present invention can be taken into account
Both the advantages of, the communication overhead in same number crunchel is relatively low, and parallel performance is good, there is potential scalability, this
The MPI+OpenMP hybrid parallels model that invention uses can improve scalability.
The present invention has merged the advantages of Message-Passing Model and multithreaded programming model, can be reduced on SMP clusters
The wallclock timestamp of calculating, improves the calculating speed of Conjugate Gradient Method With Preconditioning.
Described above is the detailed description for the present invention preferably possible embodiments, but embodiment is not limited to this hair
Bright patent claim, equal change or the modification change completed under all disclosed technical spirits, should all belong to
Cover the scope of the claims in the present invention.
Claims (7)
1. a kind of method for being improved calculating speed using MPI and OpenMP hybrid parallels for SMP group systems, its feature are existed
In comprising the following steps:
(1) calculate and prepare:
A) start MPI multi-process to calculate, wherein being less than or equal to available calculate node number into number of passes;
B) each process reads in sub- sparse matrix A, sub- initial vector x0, block vector b and max calculation tolerance Tolerance, son is dilute
Dredge matrix A, sub- initial vector x0With block vector b generated after the computational domain by mesh generation software partition problem;
(2) the parallel cycle calculations of the MPI+OpenMP of Conjugate Gradient Method With Preconditioning are started:
(3) final calculation result is obtained after the result of calculation reduction of each calculate node;
During parallel computation, MPI process initiations first carry out problem multi-process decomposition, parallel, each MPI between start node
Process is assigned in a calculate node, and information is exchanged using message transmission between process;Then in each MPI processes, make
Guidanceed command with OpenMP and create one group of thread, and be assigned on the different processor of calculate node and perform parallel.
2. improve the side of calculating speed using MPI and OpenMP hybrid parallels for SMP group systems as claimed in claim 1
Method, it is characterised in that:The mesh generation software can be Metis or ParMetis.
3. improve the side of calculating speed using MPI and OpenMP hybrid parallels for SMP group systems as claimed in claim 1
Method, it is characterised in that:MPI multi-process is opened to calculate and after OpenMP multithreadings calculate, can be directed to multinuclear SMP clusters multinuclear,
The hardware resource characteristic of multinode, realizes that the two-stage between calculate node and in calculate node is parallel.
4. improve the side of calculating speed using MPI and OpenMP hybrid parallels for SMP group systems as claimed in claim 1
Method, it is characterised in that:In parallel computation implementation procedure, communicated between calculate node (i.e. between process) by MPI message transmission modes
Data, the shared drive mode in calculate node (i.e. in process) by OpenMP sets of threads realize data sharing.
5. improve the side of calculating speed using MPI and OpenMP hybrid parallels for SMP group systems as claimed in claim 1
Method, it is characterised in that:The storage format of each sub- sparse matrix is CSR, and CSR refers to Compressed Sparse Row.
6. improve the side of calculating speed using MPI and OpenMP hybrid parallels for SMP group systems as claimed in claim 1
Method, it is characterised in that:In parallel computation implementation procedure, the memory space that can be accessed is divided into tertiary storage space, Process flowchart
The globally shared first order memory space of processor, sets of threads shares second level memory space, and the privately owned third level storage of thread is empty
Between.
7. improve the side of calculating speed using MPI and OpenMP hybrid parallels for SMP group systems as claimed in claim 1
Method, it is characterised in that:In the cycle calculations parallel MPI+OpenMP of Conjugate Gradient Method With Preconditioning only the 6), 12) He 21) this
Three steps there are OpenMP grid barrier, each thread calculate need to wait when to OpenMP grid hinder all threads calculate arrive this step could be into
The calculating of row next step.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310442102.4A CN104461467B (en) | 2013-09-25 | 2013-09-25 | The method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310442102.4A CN104461467B (en) | 2013-09-25 | 2013-09-25 | The method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461467A CN104461467A (en) | 2015-03-25 |
CN104461467B true CN104461467B (en) | 2018-05-04 |
Family
ID=52907585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310442102.4A Active CN104461467B (en) | 2013-09-25 | 2013-09-25 | The method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461467B (en) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260342A (en) * | 2015-09-22 | 2016-01-20 | 浪潮(北京)电子信息产业有限公司 | Solving method and system for symmetric positive definite linear equation set |
CN106407561B (en) * | 2016-09-19 | 2020-07-03 | 复旦大学 | Method for dividing parallel GPDT algorithm on multi-core SOC |
CN106446303B (en) * | 2016-12-16 | 2020-01-14 | 苏州浪潮智能科技有限公司 | System and method for deploying large-scale cluster file system |
CN106775594B (en) * | 2017-01-13 | 2019-03-19 | 中国科学院软件研究所 | A kind of Sparse Matrix-Vector based on 26010 processor of Shen prestige multiplies isomery many-core implementation method |
CN107273094B (en) * | 2017-05-18 | 2020-06-16 | 中国科学院软件研究所 | Data structure suitable for HPCG optimization on ' Shenwei ' Taihu light ' and efficient implementation method thereof |
CN107273339A (en) * | 2017-06-21 | 2017-10-20 | 郑州云海信息技术有限公司 | A kind of task processing method and device |
CN107203406B (en) * | 2017-06-26 | 2020-11-06 | 西安微电子技术研究所 | Processing method for distributed storage structure |
CN107291666A (en) * | 2017-06-27 | 2017-10-24 | 郑州云海信息技术有限公司 | A kind of data processing method and processing unit |
CN108595277B (en) * | 2018-04-08 | 2021-01-19 | 西安交通大学 | Communication optimization method of CFD simulation program based on OpenMP/MPI hybrid programming |
US10691772B2 (en) * | 2018-04-20 | 2020-06-23 | Advanced Micro Devices, Inc. | High-performance sparse triangular solve on graphics processing units |
CN108932172B (en) * | 2018-06-27 | 2021-01-19 | 西安交通大学 | Fine-grained shared memory communication synchronization method based on OpenMP/MPI mixed parallel CFD calculation |
CN109635191B (en) * | 2018-12-05 | 2023-02-03 | 广州市百果园信息技术有限公司 | Similarity determination method and device, storage medium and computer equipment |
GB201904266D0 (en) * | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer with embedded rings |
CN111078214B (en) * | 2019-12-02 | 2021-05-28 | 西安交通大学 | Method for coupling interaction between model and R |
CN111240744B (en) * | 2020-01-03 | 2022-03-22 | 支付宝(杭州)信息技术有限公司 | Method and system for improving parallel computing efficiency related to sparse matrix |
CN111611479B (en) * | 2020-05-07 | 2024-02-13 | 北京达佳互联信息技术有限公司 | Data processing method and related device for network resource recommendation |
CN114244708B (en) * | 2021-04-26 | 2023-08-08 | 无锡江南计算技术研究所 | Communication optimization method on fat tree network structure |
CN113239591B (en) * | 2021-05-18 | 2023-10-27 | 北京科技大学 | Method and device for large-scale finite element grid parallel partition for DCU cluster |
CN113377534A (en) * | 2021-06-08 | 2021-09-10 | 东南大学 | High-performance sparse matrix vector multiplication calculation method based on CSR format |
CN113791912B (en) * | 2021-11-11 | 2022-02-11 | 中国空气动力研究与发展中心计算空气动力研究所 | MPI + X-based DSMC parallel computing method, equipment and medium |
CN115408653B (en) * | 2022-11-01 | 2023-03-21 | 泰山学院 | Highly-extensible parallel processing method and system for IDRstab algorithm |
CN115775199B (en) * | 2022-11-23 | 2024-04-16 | 海光信息技术股份有限公司 | Data processing method and device, electronic equipment and computer readable storage medium |
CN117311948B (en) * | 2023-11-27 | 2024-03-19 | 湖南迈曦软件有限责任公司 | Automatic multiple substructure data processing method for heterogeneous parallelism of CPU and GPU |
CN117436370B (en) * | 2023-12-06 | 2024-03-19 | 山东省计算中心(国家超级计算济南中心) | Super-definite matrix equation parallel method and system for hydrodynamic grid generation |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819651A (en) * | 2010-04-16 | 2010-09-01 | 浙江大学 | Method for parallel execution of particle swarm optimization algorithm on multiple computers |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050197808A1 (en) * | 2004-03-08 | 2005-09-08 | An-Yu Kuo | Method for determining electrical and magnetic field effects |
-
2013
- 2013-09-25 CN CN201310442102.4A patent/CN104461467B/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819651A (en) * | 2010-04-16 | 2010-09-01 | 浙江大学 | Method for parallel execution of particle swarm optimization algorithm on multiple computers |
Non-Patent Citations (3)
Title |
---|
基于GPU的稀疏线性***的预条件共轭梯度法;张健飞 等;《计算机应用》;20130301;第33卷(第3期);第825-829页 * |
基于MPI与OpenMP混合并行计算技术的研究;李苏平 等;《软件导刊》;20100331;第9卷(第3期);第50-52页 * |
基于SMP集群的MPI+OpenMP混合编程模型研究;潘卫 等;《计算机应用研究》;20091231;第26卷(第12期);第4592-4594页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104461467A (en) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461467B (en) | The method for improving calculating speed using MPI and OpenMP hybrid parallels for SMP group systems | |
CN104461466B (en) | The method for improving calculating speed based on MPI and OpenMP Hybrid paradigm parallel computations | |
Voellmy et al. | Scalable software defined network controllers | |
US9038088B2 (en) | Load balancing on hetrogenous processing cluster based on exceeded load imbalance factor threshold determined by total completion time of multiple processing phases | |
CN107357661A (en) | A kind of fine granularity GPU resource management method for mixed load | |
CN103970602B (en) | Data flow program scheduling method oriented to multi-core processor X86 | |
CN102855153B (en) | Towards the stream compile optimization method of chip polycaryon processor | |
Shi et al. | A quantitative survey of communication optimizations in distributed deep learning | |
Kumar et al. | Acceleration of an asynchronous message driven programming paradigm on IBM Blue Gene/Q | |
CN110543663B (en) | Coarse-grained MPI + OpenMP hybrid parallel-oriented structural grid area division method | |
CN107122244A (en) | A kind of diagram data processing system and method based on many GPU | |
Sun et al. | A ugni-based asynchronous message-driven runtime system for cray supercomputers with gemini interconnect | |
CN106201720B (en) | Virtual symmetric multi-processors virtual machine creation method, data processing method and system | |
Xiao et al. | Prometheus: Processing-in-memory heterogeneous architecture design from a multi-layer network theoretic strategy | |
Ahn et al. | ShmCaffe: A distributed deep learning platform with shared memory buffer for HPC architecture | |
Lee et al. | Task parallelism-aware deep neural network scheduling on multiple hybrid memory cube-based processing-in-memory | |
CN117493237B (en) | Computing device, server, data processing method, and storage medium | |
CN109840306B (en) | Recursive-based parallel fast Fourier transform communication optimization method and system | |
DE102023105575A1 (en) | DISTRIBUTED SHARED STORAGE | |
Zhou et al. | Accelerating broadcast communication with gpu compression for deep learning workloads | |
Mamidala et al. | Optimizing mpi collectives using efficient intra-node communication techniques over the blue gene/p supercomputer | |
CN113391932B (en) | Parallel characteristic line method transportation scanning method and device for heterogeneous many-core architecture | |
Liu et al. | Massively parallel CFD simulation software: CCFD development and optimization based on Sunway TaihuLight | |
CN116775265A (en) | Collaborative group array | |
Liu et al. | A hybrid parallel genetic algorithm with dynamic migration strategy based on sunway many-core processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |