2015-05-18 22 views
0

我在openMP中开始尝试在我的代码源中使用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); 
    } 

但这不适用于我。

回答

2

您可以使用SECTIONS指令在不同的线程上创建每个SetHistX。您也可以根据您的需要使用TASK指令。

部分和任务之间的差异可用here

使用部分指令,你的代码看起来像这样的事情:

#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); 
    } 
} 
相关问题