Преобразование типов OpenCL из векторных типов в логические - PullRequest
4 голосов
/ 05 марта 2011

За утверждение в моем ядре OpenCL

uint4 checkCoord; // assign some value
if(checkCoord==(uint4)(0,0,0,0)){
  ; // do something
}

Я получаю следующую ошибку в компиляторе OpenCL

statement requires expression of scalar type ('int  __attribute__((ext_vector_type(4,4)))' invalid)

Какой самый простой способ преобразовать переменную типа uint4 в логическое (или скалярное) значение?

1 Ответ

5 голосов
/ 07 марта 2011

Вы должны использовать all, чтобы проверить, что условие проверено на всех компонентах вектора.checkCoord == (uint4)(0,0,0,0) - это int4 с компонентами 0 (false) или (uint)-1 (true).

if ( all( checkCoord == (uint4)(0,0,0,0) ) ) { ... }

В соответствии со спецификациями OpenCL (6.3.e) вы также можете написать

if ( all( checkCoord == 0 ) ) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...