OpenMP GPU Offload中sum值未更新问题排查及解决
OpenMP GPU Offload sum值未更新问题解决记录
环境配置
- 系统:Ubuntu 20.04 LTS
- 编译器:最初使用g++ 9.4,后续测试更换为gcc 11
- 已安装GPU Offload依赖:
gcc-9-offload-nvptx
问题表现
参考网上示例编写OpenMP GPU Offload代码后出现以下异常:
- 程序运行时sum始终保持初始值,未按预期完成计算更新
- 编译阶段弹出HSA相关警告
排查尝试
- 清理代码中的冗余循环,调整sum的初始值,问题未得到解决
- 更换为gcc 11重新编译,现象依旧,但通过
nvtop观察到GPU已被调用,说明Offload逻辑本身在执行
关键修复
将OpenMP并行区域中的map(from: data1_ptr[0:size])修改为map(tofrom: data1_ptr[0:size])后,sum值恢复正常更新。值得注意的是,代码中并未对data1_ptr指向的数组执行写入操作,但映射模式的调整直接解决了问题。
内容的提问来源于stack exchange,提问作者Andi
相关产品推荐
相关产品推荐

