February 11th, 2010

glider

Говорите, дабл пресижен?

На днях сел дизайнить заключительную стадию пайплайна кросскомпиляции для Конфлакса. Начал разбираться с тем, какие именно заэкспозить функции в API и как их замаппить на хардвару (т.е. на инструкции ассемблера PTX ISA 1.4).

С удивлением обнаружил, что, несмотря на заявленную поддержку двойной точности (флоатов размером в 64 бита), трансцендентные функции есть только в сингл-пресижн варианте. Поэтому для дабл-пресижна надо лабать эмуляцию вручную, что и делает компилятор nvcc, входящий в состав CUDA SDK. Вот, например, в какое полотно nvcc разворачивает кодярник *output = sin(input) для дабловых переменных.

Collapse )