読者です 読者をやめる 読者になる 読者になる

openmp サンプル

//並列化
static void func_pararel_test()
{
	//時間測定
	auto start = chrono::system_clock::now();
	auto end = chrono::system_clock::now();
	chrono::duration<double> elapsed_1, elapsed_2;

#pragma omp parallel		//コアの数だけ実行される
	{
		printf("parallel\n");
	}

	const int size = 10000;
	array<char,size * 10> data;
	int i;
	for (int loop_num = 0; loop_num < 10; loop_num++)
	{
		start = chrono::system_clock::now();
		{
			#pragma omp parallel for
			for (i = 0; i < size; i++) 
			{
				for (int j = 0; j < 10; j++)
				{
					data[i*j] = sin(i*j);
				}
			}
		}
		
		
		end = chrono::system_clock::now();
		elapsed_1 = end - start;

		start = chrono::system_clock::now();
		{
			for (i = 0; i < size; i++) 
			{
				for (int j = 0; j < 10; j++)
				{
					data[i*j] = sin(i*j);
				}
			}
		}
		end = chrono::system_clock::now();
		elapsed_2 = end - start;

		cout << elapsed_1.count() << ":" << elapsed_2.count() << endl;
	}
}