D Генерация кода CTFE и GPU

Могут ли миксины D использоваться для отображения операций линейной алгебры в / или коде ЦП и функциях вершинных шейдеров OpenCL или GPU, таких как GLSL? Это было бы настоящим убийственным приложением для D и улучшенной мостовой логикой, предназначенной для выполнения как CPU, так и GPU. Сравните это с glm и gl3n из D, которые компилируют только линейную алгебру фиксированного размера в код процессора.

VexCL является доказательством концепции для этого, используя OpenCL и C++11 (GCC 4.6 или более поздние версии), полностью абстрагируя детали реализации, зависящие от бэкэнда (CPU/GPU), о распределении памяти и выполнении кода, чем-то похожем на C++ AMP. Так что в D все может стать только лучше, верно? Могут ли миксины полностью заменить использование шаблонов выражений C++, используемых в VexCL? Вот хороший учебник по его использованию.

CTFE также может сыграть здесь роль в этом обсуждении.

1 ответ

Определенно да. На самом деле это должно быть довольно просто. Я проверил концепцию такого рода вещей еще в 2007 году (см. Мою презентацию на первой конференции D). В те дни едва ли что-то работало в CTFE, но все же это было на порядок проще, чем в C++.

Желание делать подобные вещи было частью мотивации для разработки параметров значения шаблона, операций CTFE и SIMD.

Другие вопросы по тегам