Комментировать

Да, конечно это extension,

Да, конечно это extension, можно extension'ом было бы сделать и информацию компилятора.

Немного о том почему иногда лучше OpenCL чем Cuda(даже если не планируется использовать не NVidia карты):
Как я понял в Cuda нет возможности использовать код ядер, на языке C, сгенерированных на лету(я так понял это можно сделать с PTX. Если вдруг это можно и для Cuda C, буду только рад).
Зачем может потребоваться генерация ядер на лету:
1. в зависимости от железки, оптимальный код ядер будет разный, но это не так страшно - нетрудно собрать пять разных ядер.
2. В зависимости о размерности и структуры(для разных разряженных матриц, оптимально запускать разное количество потоков на строку при умножении на вектор. Разные ядра нужны для разной reduce в shared mem) задачи оптимальный код тоже будет разный(как и размер блока и т.п.). Можно сделать генератор ядер, который может сделать много разных вариантов(также в OpenCL, можно удобно определять свои define для кода - clBuildProgram ), и протестировать их. Бывают задачи, для которых требуется запустить много раз одни и те же ядра(например те же итерационные решатели), было бы неплохо перед началом долгих итераций, подобрать оптимальное ядро.