所以先確定環境也是有支援 openmp
在 linux 其實 gcc 也已經內建 openmp
code 完全跟 windows vs2008 一樣
加上下列兩行就可以用
#include <omp.h>
#pragma omp parallel for
#pragma omp parallel for
只是在 copiler 要注意加入參數 -fopenmp 即可
g++ -fopenmp test.c
OK 這樣只要好好的把迴圈寫好
windows 跟 linux 環境相同的 code 都可以發揮出多核心的優勢
美中不足的是
驗證 server 竟然也才雙核
看看我平常寫 fw 的 server
可以用到八核心來跑 >////< 感動啊 這速度
實驗用 code
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
int total;
int main(int argc, char* argv[])
{
printf("num of threads : %d\n", omp_get_max_threads());
#pragma omp parallel for reduction( +:total)
for( int i = 0; i < 20; ++ i )
{
printf("%2d:%d\n", i, omp_get_thread_num());
for ( int j = 0; j < 50000000; j++)
{
total++;
}
}
}
實驗結果
num of threads : 8
0:0
6:2
9:3
12:4
15:5
18:6
3:1
10:3
13:4
1:0
19:6
16:5
7:2
4:1
14:4
11:3
2:0
17:5
8:2
5:1
寫這要給誰看?請學長來看一下好了XD
回覆刪除Flora