2011年6月30日 星期四

讓程式更快 - 多核心處理器3 - linux server

為了讓程式可以在 linux 跑 verify
所以先確定環境也是有支援 openmp

在 linux 其實 gcc 也已經內建 openmp
code 完全跟 windows vs2008 一樣

加上下列兩行就可以用
#include <omp.h>
#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

1 則留言:

  1. 寫這要給誰看?請學長來看一下好了XD
    Flora

    回覆刪除

開放匿名留言 請大家注意網路禮儀