CUDA только изначально поддерживает 32- и 64-битные типы с плавающей точностью.
И драйверы, и API-интерфейсы среды выполнения поддерживают привязку к текстурам с плавающей половиной, но в результате чтения в ядре будет возвращено значение, переведенное в 32-битную плавающуюномер точки.Стандартные библиотеки CUDA включают функции __half2float()
и __float2half_rn()
для преобразования типов с плавающей запятой половинной и одинарной точности (половина с плавающей запятой хранится в 16-битном целом числе).Таким образом, можно было бы выполнять манипуляции в 32-битных ядрах с точностью чтения и записи, используя 16-битные типы.Но для родной 16-битной плавающей запятой, я думаю, вам не повезло.
ПРАВКА, чтобы добавить, что в 2015 году NVIDIA расширила поддержку с плавающей запятой половинной точности с помощью инструментария CUDA 7.5, добавив half
иhalf2
типов и встроенных функций для их обработки.Также было объявлено, что (еще не выпущенная) архитектура Pascal будет поддерживать совместимые с IEE754-2008 операции с половинной точностью в аппаратном обеспечении.