2013-01-14 15 views
6

Konnte D's Mixins verwendet werden, um lineare Algebraoperationen auf entweder CPU-Code und OpenCL- oder GPU-Vertex-Shader-Funktionen wie GLSL? Dies wäre eine echte Killer-Anwendung für D und eine bessere Bridge-Logik für die CPU- und GPU-Ausführung. Vergleichen Sie dies mit glm und D's gl3n, die nur feste Größe lineare Algebra zu CPU-Code kompilieren.D CTFE- und GPU-Codegenerierung

VexCL ist ein Proof of Concept für diese Verwendung von OpenCL und C++ 11 (4.6 GCC oder höher) von vollständig abstrahiert entfernt Backend-abhängige (CPU/GPU) Implementierungsdetails über Speicherzuordnungen und die Ausführung von Code ein wenig ähnlich C++ AMP. Also kann es in D nur noch besser werden? Können Mixins die Verwendung von in VexCL verwendeten C++ - Ausdrucksvorlagen vollständig ersetzen? Here's a nice tutorial auf seine Verwendung.

CTFE kann auch eine Rolle in dieser Diskussion spielen.

Antwort

1

Ja, definitiv. Eigentlich sollte es ziemlich einfach sein. Ich habe diese Art von Konzept bereits im Jahr 2007 proof-of-concept gemacht (siehe meine Präsentation auf der ersten D-Konferenz). Damals funktionierte in CTFE kaum etwas, aber es war immer noch eine Größenordnung einfacher als das Äquivalent in C++.

Der Wunsch, so etwas zu tun, war Teil der Motivation für die Entwicklung von Template-Wert-Parametern, CTFE- und SIMD-Operationen.

+0

Haben Sie Dokumente oder Codes, auf die Sie sich beziehen können, entweder von Ihnen selbst oder von anderen? –

+0

Der Code, den ich zu der Zeit geschrieben habe, ist wahrscheinlich immer noch auf dsource.org im MathExtra-Projekt. Aber wie gesagt, der Compiler hat sich in den letzten 5 Jahren so sehr verbessert, dass mein Code hoffnungslos veraltet ist. Damals konnten Sie nicht einmal Strukturen zur Kompilierzeit verwenden. Jetzt können Sie auch Ausnahmen auslösen und Zeiger verwenden! Die Regex-Implementierung zur Kompilierungszeit in Phobos ist ein gutes Beispiel für neueren Code. –