我想在OpenACC项目中使用C的floor / ceil函数。当我想对值进行原子更新时。
#pragma acc atomic update
x=floor(x)+c
编译器显示以下消息:
PGCC-S-0155-原子表达式无效 PGCC-S-0155-原子区域无效。
可能是什么问题?
答案 0 :(得分:0)
原子操作用于简单直接的操作,如+, - ,*和/。如果您查看OpenACC规范[link]的第2.12节(原子构造),您将看到在原子构造中使用的可用操作列表。
因此,尽管您可以在GPU上执行floor
,但您无法在 atomic 部分中执行此操作。