日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

eclipse openmp mpi并行编程例子

發布時間:2025/6/15 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 eclipse openmp mpi并行编程例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


openmp ??

???首先,下載這個版本的Eclipse:http://www.eclipse.org/downloads/packages/eclipse-parallel-application-developers/lunasr1? ?支持并發編程的版本。

然后下載這個版本的gcc:http://tdm-gcc.tdragon.net/download

? ???下載的時候看清楚32位和64位的。

? ?下載完了點擊安裝,我的安裝路徑是C:\TDM-GCC-64:

下載http://tdm-gcc.tdragon.net/download網站里的這個包含OpenMP庫的壓縮包:

32位系統的下載這個:


64位系統下載這個:


下載完了后解壓看到這些文件:


將這些文件全部選擇,復制。在這里粘貼:


選擇是,合并文件夾。

到這里就已經完成OpenMP開發環境的搭建了,接下來打開Eclipse新建一個OpenMP應用程序吧~~

這里就已經完成OpenMP開發環境的搭建了,接下來打開Eclipse新建一個OpenMP應用程序吧~~


選擇OpenMP工程,在這里新建的是C語言的工程,編譯用的gcc,后面會講到怎么在C++工程里也是用OpenMP。


然后右鍵工程,Build Project:


接下來右鍵Run As:


看看輸出結果吧~~




上面只是一個初步介紹,不知道有沒有發現在新建工程時沒有提供C++ OpenMP選項,如果要在C++工程中使用OpenMP怎么辦呢?其實在新建項目的時候沒有必要按照上面的要求來,可以新建一個任意的C或C++工程。只要設置編譯和鏈接參數即可。接下來新建一個C++ HelloWorld程序并使用OpenMP。

? 在剛才新建項目的選項中選擇Hello World C++ Project:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? 把源文件代碼改成這樣:

[cpp]?view plaincopy
  • #include?<omp.h>??
  • #include?<iostream>??
  • using?namespace?std;??
  • ??
  • int?main()?{??
  • ????omp_set_num_threads(4);??
  • #pragma?omp?parallel??
  • ????cout?<<?"!!!Hello?World!!!?from?thread?"?<<?omp_get_thread_num()?<<?endl;?//?prints?!!!Hello?World!!!??
  • ????return?0;??
  • }??

  • 然后右鍵工程—>屬性(Properties),在下面這里選擇C++編譯器,在g++后面加入編譯參數

    (注意"-fopenmp"和"g++"之間有個空格!)


    同樣,在C++鏈接器里也需要加入同樣的參數:


    OK之后就可以build項目然后運行了~~



    下面有幾個例子


    1 c語言版

    /*============================================================================Name : helo.cAuthor : judygeVersion :Copyright : Your copyright noticeDescription : Hello OpenMP World in C============================================================================*/ #include <omp.h> #include <stdio.h> #include <stdlib.h> /*** Hello OpenMP World prints the number of threads and the current thread id*/ int main (int argc, char *argv[]) {int numThreads, tid;/* This creates a team of threads; each thread has own copy of variables */ #pragma omp parallel private(numThreads, tid){tid = omp_get_thread_num();printf("Hello World from thread number %d\n", tid);/* The following is executed by the master thread only (tid=0) */if (tid == 0){numThreads = omp_get_num_threads();printf("Number of threads is %d\n", numThreads);}}return 0; }
    2 c++語言版

    /** hellopenmp.cpp** Created on: 2015年4月14日* Author: judyge*/#include <omp.h> #include <iostream> using namespace std;int main() {omp_set_num_threads(4); #pragma omp parallelcout << "!!!Hello World!!! from thread " << omp_get_thread_num() << endl; // prints !!!Hello World!!!return 0; }



    #pragma omp parallel num_threads
    /** num_threads.cpp** Created on: 2015年4月14日* Author: judyge*/#include <iostream> using namespace std; int main() {#pragma omp parallel num_threads(5){cout << "Hello World!\n";} }

    omp_set_num_threads(5);

    /** omp_set_num_threads.cpp** Created on: 2015年4月14日* Author: judyge*/#include <omp.h> #include <iostream> int main() {omp_set_num_threads(5);#pragma omp parallel{std::cout << "Hello World!\n";} }
    #pragma omp parallel for

    /** forp.cpp** Created on: 2015年4月14日* Author: judyge*/int main( ) { int a[1000000], b[1000000]; // ... some initialization code for populating arrays a and b; int c[1000000]; #pragma omp parallel for for (int i = 0; i < 1000000; ++i)c[i] = a[i] * b[i] + a[i-1] * b[i+1]; // ... now do some processing with array c}

    MPI ? ? 注意安裝位置不能有空格 只有C語言版


    下載MPICH:http://www.mpich.org/downloads/?注意,是下載windows版本的非官方的這個安裝包:

    32位下載x86,64位下載x86_64。

    最好直接安裝在某個盤的根目錄下,比如我的安裝目錄是C:\MPICH2,目錄中不要出現空格。

    ? ?

    ? ?安裝好后到Eclipse下配置:Windows—>Preferences


    ? 選擇MPI的include路徑,注意紅框里的內容。把build命令改成gcc和g++,因為安裝的MPICH中沒有mpicc和mpic++。。。



    /*============================================================================Name : hellompi.cAuthor : judygeVersion :Copyright : Your copyright noticeDescription : Hello MPI World in C ============================================================================*/ #include <stdio.h> #include <string.h> #include "mpi.h"int main(int argc, char* argv[]){int my_rank; /* rank of process */int p; /* number of processes */int source; /* rank of sender */int dest; /* rank of receiver */int tag=0; /* tag for messages */char message[100]; /* storage for message */MPI_Status status ; /* return status for receive *//* start up MPI */MPI_Init(&argc, &argv);/* find out process rank */MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); /* find out number of processes */MPI_Comm_size(MPI_COMM_WORLD, &p); if (my_rank !=0){/* create message */sprintf(message, "Hello MPI World from process %d!", my_rank);dest = 0;/* use strlen+1 so that '\0' get transmitted */MPI_Send(message, strlen(message)+1, MPI_CHAR,dest, tag, MPI_COMM_WORLD);}else{printf("Hello MPI World From process 0: Num processes: %d\n",p);for (source = 1; source < p; source++) {MPI_Recv(message, 100, MPI_CHAR, source, tag,MPI_COMM_WORLD, &status);printf("%s\n",message);}}/* shut down MPI */MPI_Finalize(); return 0; }



    總結

    以上是生活随笔為你收集整理的eclipse openmp mpi并行编程例子的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。