// OpenMP1.cpp : 定义控制台应用程序的入口点。 // 使用并行区域方法进行求和 #include "stdafx.h" #include <time.h> #include <windows.h> #include <omp.h> #define NUM_THREADS 2 int _tmain(int argc, _TCHAR* argv[]) { omp_set_num_threads(NUM_THREADS); long long sum = 0; long long sumtmp[NUM_THREADS]; clock_t t1 = clock(); #pragma omp parallel { long i; long id = omp_get_thread_num(); long long temp = 0l; for(i = id; i <= 1000000000; i = i + NUM_THREADS) { temp += i; } sumtmp[id] = temp; } for(long i = 0; i < NUM_THREADS; i++) { sum += sumtmp[i]; } clock_t t2 = clock(); printf("sum = %lld ", sum); printf("parallel time = %d ", t2 - t1); sum = 0; t1 = clock(); for(long i = 1; i <= 1000000000; i += 1) { sum = sum + i; } t2 = clock(); printf("sum = %lld ", sum); printf("serial time = %d ", (t2 - t1)); system("pause"); return 0; }