2016-09-04 6 views
0

Я хочу использовать функции пола/потолка C в проекте OpenACC. Когда я хочу сделать атомное обновление значения.Функции OpenACC и floor/ceil

#pragma acc atomic update 
x=floor(x)+c 

компилятор показывает следующее сообщение:

PGCC-S-0155-Invalid атомно выражение PGCC-S-0155-Invalid атомной области.

В чем может быть проблема?

ответ

0

Атомные операции предназначены для простых и простых операций, таких как +, -, * и /. Если вы посмотрите на раздел 2.12 (Atomic Construct) спецификации OpenACC [42], вы увидите список доступных операций для использования в атомной конструкции.

Таким образом, хотя вы могли бы сделать floor на GPU, вы не можете сделать это в атомныхсекций.