首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于OpenMP编程模型的GPU动态/嵌套并行

基于OpenMP编程模型的GPU动态/嵌套并行
EN

Stack Overflow用户
提问于 2015-08-06 08:27:11
回答 1查看 363关注 0票数 0

我的问题与声明目标、OpenMP的构造和GPU的动态/嵌套并行特性有关。OpenACC 2.0以两种方式支持动态并行性:例程指令和以嵌套方式使用并行/内核指令。但是在OpenMP中禁止使用嵌套的设备指令,如目标、团队或分发。但在我看来,“声明目标”指令与OpenACC的常规指令相似。

然而,它的语义和用法还不清楚。我的示例代码是这样的。

代码语言:javascript
复制
#pragma omp declare target
void foo(){

  //work-1

#pragma omp target teams distribute parallel for 
for(...)
{
    if(...){
       foo();
    {
      //work-2
    }
}

//work-3
}
#pragma omp end declare target

int main(){
//work 

foo();

}

在该示例中,我期望函数foo将映射为设备函数。但是由于它内部有目标构造,编译器将以某种方式转换这段代码。我的问题是,当线程在目标构造中遇到foo函数调用时会发生什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-18 08:01:54

目前,OpenMP不支持目标区域的嵌套。因此,您的代码很可能不会编译。或者,当遇到嵌套目标构造时,它可能会在运行时崩溃。或者产生意想不到的结果。基本上,不符合程序的结果是未指定的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31850576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档