㈠ MPI是什麼意思
http://www.mpi-forum.org/
http://www-unix.mcs.anl.gov/mpi/mpich/
mpi是多點介面(multipointinterface)的簡稱
對mpi的定義是多種多樣的,但不外乎下面三個方面,它們限定了mpi的內涵和外延:
1、mpi是一個庫,而不是一門語言。許多人認為,mpi就是一種並行語言,這是不準確的。但是,按照並行語言的分類,可以把fortran+mpi或c+mpi看作是一種在原來串列語言基礎之上擴展後得到的,並行語言mpi庫可以被fortran77/c/fortran90/c++調用,從語法上說,它遵守所有對庫函數/過程的調用規則,和一般的函數/過程沒有什麼區別;
2、mpi是一種標准或規范的代表,而不特指某一個對它的具體實現,迄今為止,所有的並行計算機製造商都提供對mpi的支持,可以在網上免費得到mpi在不同並行計算機上的實現,一個正確的mpi程序可以不加修改地在所有的並行機上運行;
3、mpi是一種消息傳遞編程模型,並成為這種編程模型的代表。事實上,標准mpi雖然很龐大,但是它的最終目的是服務於進程間通信這一目標的;
解釋來源於《高性能計算之並行編程技術——mpi並行程序設計》都志輝編著
4、mpi是多點介面(multipointinterface)的簡稱,是西門子公司開發的用於plc之間通訊的保密的協議。mpi通訊是當通信速率要求不高、通信數據量不大時,可以採用的一種簡單經濟的通訊方式。mpi通信可使用plcs7-200/300/400、操作面板tp/op及上位機mpi/profibus通信卡,如cp5512/cp5611/cp5613等進行數據交換。mpi網路的通信速率為19.2kbps~12mbps,最多可以連接32個節點,最大通訊距離為50m,但是可能通過中斷器來擴展長度。
解釋來源於《西門子工業網路通信指南》(上冊)崔堅主編
㈡ 並行計算,有沒有人會這個
我會。
入門的話推薦你學習下MPI編程,
目前並行計算基本上有:MPI、OPENMP、OPENCL、OPENGL、CUDA
你只是想體驗的話用OPENMP最省事了,一句話就可以達到並行的效果
代碼我可以給你,但你要配好環境。先給你裸敲一個hello world的MPI程序吧
#include<stdio.h>
#include<mpi.h>
intmain(intargc,char*argv[])
{
intmypid,numprocs;
MPI_Init(&argc,&argv);//並行開始
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);//獲取進程數
MPI_Comm_rank(MPI_COMM_WORLD,&mypid);//獲取本進程ID號
printf("helloworld!iam%dprocessof%dprocesses",mypid,numporcs);
MPI_Finalize();//並行結束
}
這就是MPI版的hello world 程序,你需要在編譯的時候確定同時打開幾個進程,比如說4個,程序可能運行結果為:
hello world! i am 2 process of 4 processes
hello world! i am 1 process of 4 processes
hello world! i am 0 process of 4 processes
hello world! i am 3 process of 4 processes
為什麼說可能呢,因為四個進程同時在執行上面的那段代碼,哪個進程先結束哪個就先輸出就這個道理。
想學並行編程的話,建議你在linux下學習。
望採納
㈢ MPI是用於什麼系統的並行編程模型
openmp和mpi原理:openmp一般用於多核並行,
全是一種並行編程框架,mpi是一種基於消息的進程間通信機制,可以跨越多機。實際中,一般俠義的mpi配合調器一起完成
㈣ 求解並行題目: 以下是一段用MPI 實現的並行程序代碼,用來並行求一組數的和。 #include <mpi.h> #include
#include <mpi.h>
#include <stdio.h>
#include <math.h>
#define SIZE 10
void main(int argc, char *argv)
{
int myid, numprocs;
int data[SIZE], i, x, low, high, myresult, result;
char fn[255];
char *fp;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
if (myid == 0) { /* Open input file and initialize data */
strcpy(fn,getenv("HOME"));
strcat(fn,"/data");
if ((fp = fopen(fn,"r")) == NULL) {
printf("Can』t open the input file: %s\n\n", fn);
exit(1);
}
for(i = 0; i < SIZE; i++) fscanf(fp,"%d", &data[i]);
}
/* broadcast data */
MPI_Bcast(data, SIZE, MPI_INT, 0, MPI_COMM_WORLD);
/* Add my portion Of data */
x = SIZE/numprocs;
low = myid * x;
high = low + x;
if(myid == numprocs - 1) high = SIZE;
myresult = 0;
for(i = low; i < high; i++)
myresult += data[i];
/* Compute global sum */
MPI_Rece(&myresult, &result, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
if (myid == 0) printf("The sum is %d.\n", result);
MPI_Finalize();
}
㈤ 急求一關於求解大規模稀疏矩陣的MPI並行計算程序(基於C語言)
這個大哥牛逼啊!!!!楊老闆要看到了肯定怨念重重啊!!!
㈥ 有誰能推薦兩本並行計算的書么剛開始學
經典的么Michael Quinn 的 《MPI與Openmp並行程序設計》,太經典了,但絕版了,沒pdf的,去復印吧。還有么Barry的並行程序設計,裡面的調度演算法講得不錯。還有機工的幾本並行都不錯的,不過很多都絕版了。
以過來人的建議千萬別買陳國良的《並行計算》,完全抄襲黃凱的書!就算老師推薦也別買,誰買誰後悔!
希望對你有所幫助,來自一個碩士研究生朋友的建議。