但是,增加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
沒有留言:
張貼留言