OpenMP没有加速

时间:2014-05-03 10:09:15

标签: c performance openmp

我试图使用OpenMP进行矩阵乘法和计数排序,但添加处理器并没有加快速度(这是我的目标)。所以我决定做一个简单的例子,事实证明即使是那个简单的for循环也不会加速!所以我的问题是,为什么这段代码没有加速?

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

int main(int argc, char** argv){
int num_threads = 4;
long num_numbers;

char* size = argv[1];
char* threads = argv[2];
num_numbers = atoi(size);
num_threads = atoi(threads);

double start_time = clock();
int i =0;

#pragma omp parallel for num_threads(num_threads) default(none) private(i) shared(num_numbers)
for(i =0; i < num_numbers; i++){
    //nothing
}

double end_time = clock();
double result_time = (end_time - start_time) / CLOCKS_PER_SEC;
printf("Time: %f\n", result_time);

return 0;
}

我正在编译:

gcc -fopenmp -Wall openmp.c -o openmp.o

启动:

./openmp.o 500000000000 2

时间:

1 thread:  4.0s
2 threads: 5.0s
3 threads: 5.4s

为什么程序没有加速?

解决方案: 我将clock()更改为omp_get_wtime(),现在速度加快。

0 个答案:

没有答案