[問題] OpenMp for迴圈平行化?
開發環境:GCC
Source Code:
#include <omp.h>
#include <iostream>
using namespace std;
#define WIDTH 2000
#define NUM_THREADS WIDTH*WIDTH
#define NT 8
long int P;
int main()
{
int i, j, k;
omp_set_num_threads(NT);
#pragma omp parallel
{
#pragma omp parallel for reduction( +:P)
for (i = 0; i < WIDTH; ++i) {
for (j = 0; j < WIDTH; ++j) {
for (k = 0; k < WIDTH; ++k) {
P+=1;
}
}
}
}
return 0;
}
上列是小弟我在做OpenMp的測試程式碼,本來是希望用這個方式減少運算時間,可是根據
目前的執行時間發現我如果不做paralle的會比parallel還快,所以我想請各位高手幫我
解決這個問題。還有就是當我坐parallel的時候,CPU%幾乎可以跑到800%,那這個意思是
我的程式碼的確有在做八個執行續的運算?那如果有的話怎麼會用單一個執行續運算的速
度還慢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.242.11.237
推
01/29 23:56, , 1F
01/29 23:56, 1F
→
01/30 00:47, , 2F
01/30 00:47, 2F
→
01/30 00:47, , 3F
01/30 00:47, 3F
→
01/30 00:48, , 4F
01/30 00:48, 4F
→
01/30 08:36, , 5F
01/30 08:36, 5F
→
01/30 09:04, , 6F
01/30 09:04, 6F
→
01/31 01:28, , 7F
01/31 01:28, 7F
→
01/31 01:36, , 8F
01/31 01:36, 8F
→
01/31 01:37, , 9F
01/31 01:37, 9F
→
01/31 10:08, , 10F
01/31 10:08, 10F
→
01/31 11:04, , 11F
01/31 11:04, 11F
→
01/31 11:05, , 12F
01/31 11:05, 12F
→
01/31 11:09, , 13F
01/31 11:09, 13F
→
02/26 23:57, , 14F
02/26 23:57, 14F
→
02/26 23:57, , 15F
02/26 23:57, 15F