我在openMP中开始尝试在我的代码源中使用openMP。我有四个函数,我想为每个线程提供一个函数。这是我的代码:
int a,b,c,d;
omp_set_num_threads(4);
#pragma omp parallel
{
a=SetHist1(int (Convert_Mask0(mask)),1);
b=SetHist2(int (Convert_Mask45(mask)),1);
c=SetHist3(int (Convert_Mask90(mask)),1);
d=SetHist4(int (Convert_Mask135(mask)),1);
}
但这对我不起作用。
答案 0 :(得分:2)
您可以使用SECTIONS指令在不同的线程上创建每个SetHistX
。您也可以根据需要使用TASK指令。
可以使用部分和任务之间的使用差异here。
使用sections指令,您的代码看起来像这样:
#pragma omp parallel sections
{
#pragma omp section
{
a=SetHist1(int (Convert_Mask0(mask)),1);
}
#pragma omp section
{
b=SetHist2(int (Convert_Mask45(mask)),1);
}
#pragma omp section
{
c=SetHist3(int (Convert_Mask90(mask)),1);
}
#pragma omp section
{
d=SetHist4(int (Convert_Mask135(mask)),1);
}
}