2013-01-14 10 views
6

Могут ли D's Mixins использоваться для сопоставления операций линейной алгебры с либо/оба Код процессора и функции вершинного шейдера OpenCL или GPU, такие как GLSL? Это будет реальное приложение-убийца для D и лучшая логика моста, предназначенная как для CPU, так и для графического процессора. Сравните это с glm и D's gl3n, который только компилирует линейную алгебру фиксированного размера в CPU-код.D Генерация кода CTFE и GPU

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

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

ответ

1

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

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

+0

Есть ли у вас какие-либо документы или код для ссылок, как ваших, так и других? –

+0

Код, который я написал в то время, вероятно, все еще находится на dsource.org в проекте MathExtra. Но, как я уже сказал, компилятор настолько улучшился за последние 5 лет, что мой код безнадежно устарел. Тогда вы даже не могли использовать structs во время компиляции; теперь вы можете даже бросать исключения и использовать указатели! Реализация регулярного выражения компиляции в Phobos является хорошим примером более позднего кода. –