OpenACC и функции пола / потолка

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

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

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

PGCC-S-0155-Неправильная атомная экспрессия
PGCC-S-0155-Неверный атомный регион.

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

0

Решение

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

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

0

Другие решения

Других решений пока нет …