2013-01-14 17 views
6

È possibile utilizzare le miscele D per mappare le operazioni di algebra lineare su /entrambi codice CPU e funzioni di vertex shader OpenCL o GPU come GLSL? Questa sarebbe una vera e propria applicazione killer per D e una migliore logica di bridge mirata per l'esecuzione sia della CPU che della GPU. Confronta questo con glm e D's gl3n che è solo algebra lineare a dimensione fissa compilata per codice CPU.D Generazione codice CTFE e GPU

VexCL è un prototipo di questa utilizzando OpenCL e C++ 11 (GCC 4.6 o successiva) completamente astraendo backend-dipendente (CPU/GPU) dettagli implementativi circa allocazioni di memoria e l'esecuzione di codice in qualche modo simile al C++ AMP. Quindi le cose possono solo migliorare in D, giusto? I mixins possono sostituire completamente l'uso dei modelli di espressione C++ usati in VexCL? Here's a nice tutorial al suo utilizzo.

CTFE può anche svolgere un ruolo in questa discussione.

risposta

1

Sì, sicuramente. In realtà dovrebbe essere abbastanza semplice. Ho fatto una dimostrazione di questo genere di cose nel 2007 (vedi la mia presentazione alla prima conferenza D). A quei tempi quasi nulla funzionava in CTFE, ma era ancora un ordine di grandezza più facile che fare la cosa equivalente in C++.

Il desiderio di fare questo genere di cose era parte della motivazione per lo sviluppo dei parametri del valore del modello, CTFE e operazioni SIMD.

+0

Avete documenti o codici a cui fare riferimento, da soli o da altri? –

+0

Il codice che ho scritto al momento è probabilmente ancora su dsource.org nel progetto MathExtra. Ma, come ho detto, il compilatore è migliorato così tanto negli ultimi 5 anni che il mio codice è diventato irrimediabilmente obsoleto. Allora, non potevi nemmeno usare le strutture in fase di compilazione; ora puoi anche lanciare eccezioni e usare i puntatori! L'implementazione di regex in fase di compilazione in Phobos è un buon esempio di codice più recente. –