2010-12-14 16 views

Antwort

17

Ja; aber die Größe eines Bool ist nicht definiert. Daher hat es keinen zugeordneten API-Typ (wie groß der Wert sein sollte, ist geräteabhängig).

Siehe Abschnitt 6.1.1 Integrierter skalarer Datentyp der OpenCL 1.1-Spezifikation für eine Liste der unterstützten Skalartypen.

Aus Abschnitt 6.8.k

Argumente Funktionen in einem Programm __kernel können nicht mit dem eingebauten in skalaren Typen Bool, halb, size_t, ptrdiff_t, intptr_t und uintptr_t deklariert werden. Die Größe in Bytes dieser Typen außer der Hälfte sind implementierungsdefiniert und zusätzlich können auch für das OpenCL-Gerät und den Host-Prozessor unterschiedlich sein, was es schwierig macht, Pufferobjekte als Argumente an einen als Kernel deklarierten Kernel zu übergeben Diese Typ

+3

Ich bin verwirrt, es gibt einen Bool-Typ, aber ich kann es nicht verwenden? – smuggledPancakes

+10

Sie können es _in_ einem Kernel verwenden, aber nicht für Übertragungen oder Zugriffe zwischen dem Host und dem OpenCL-Code auf einem Compute-Gerät, da die Größe nicht portabel definiert ist. – grrussel