2009年3月8日 星期日

多線程程式設計 - openmp

最近在學習如何增加thread,與使用fork的方法。

但是,增加thread與fork就好像把一支程式分成許多隻小程式,但是,在每一個時間還是只有一個小程式可以被執行,其它的小程式均必需要排隊。

若你手上有多核心的電腦,在幾乎不用修改程式碼,就可以讓原本的許多的小程式可以被分配到多個核心上去跑。

而那一個就是openmp

main.c

#include <omp.h>
#include <stdio.h>
#include <stdlib.h>

void Test(int n)
{
int i;
for (i=0;i<10000;++i)
{
// waste time
}
printf("%d, ",n);
}

int main(int argc,char **argv)
{
int i;
#pragma omp parallel for
for (i=0;i<10;i++)
Test(i);
printf("\n");
}


執行編譯:

$ gcc -fopenmp main.c

而-fopenmp就是開啟openmp功能的參數

參考資料:
Linux下程式
OpenMP並行編程簡易教程

windows下程式
簡易的程式平行化方法-OpenMP(一)簡介
簡易的程式平行化方法-OpenMP
充分利用多核心的程式

GOMP
OpenMP Exercise

沒有留言: