2013-01-14 2 views
6

Est-ce que les Mixins de D pourraient être utilisés pour mapper des opérations d'algèbre linéaire sur soit les deux code CPU et les fonctions de vertex shader OpenCL ou GPU telles que GLSL? Ce serait une vraie application de tueur pour D et une meilleure logique de pont ciblée à la fois pour l'exécution du processeur et du GPU. Comparez ceci avec glm et D gl3n qui est seulement compiler l'algèbre linéaire de taille fixe au code de CPU.D Génération de codes CTFE et GPU

VexCL est une preuve de concept pour cela en utilisant OpenCL et 11 C++ (GCC 4.6 ou ultérieure) par complètement abstraire de dépendant du backend (CPU/GPU) les détails de mise en œuvre sur les allocations de mémoire et l'exécution de code quelque peu semblable à C++ AMP. Donc les choses ne peuvent que s'améliorer en D? Les mixins peuvent-ils remplacer complètement l'utilisation des modèles d'expression C++ utilisés dans VexCL? Here's a nice tutorial sur son utilisation.

CTFE peut également jouer un rôle ici dans cette discussion.

Répondre

1

Oui, définitivement. En fait, cela devrait être assez simple. J'ai fait une preuve de concept de ce genre de chose en 2007 (voir ma présentation lors de la première conférence D). À l'époque, peu de choses fonctionnaient dans CTFE, mais il était encore plus facile de faire quoi que ce soit en C++.

Le désir de faire ce genre de chose faisait partie de la motivation pour le développement des paramètres de valeur de modèle, des opérations CTFE et SIMD.

+0

Avez-vous des documents ou du code auquel faire référence, que ce soit le vôtre ou d'autres personnes? –

+0

Le code que j'ai écrit à l'époque est probablement encore sur dsource.org dans le projet MathExtra. Mais, comme je l'ai dit, le compilateur s'est tellement amélioré au cours des 5 dernières années que mon code est désespérément obsolète. À l'époque, vous ne pouviez même pas utiliser les structures au moment de la compilation; maintenant vous pouvez même lancer des exceptions et utiliser des pointeurs! L'implémentation de regex lors de la compilation dans Phobos est un bon exemple de code plus récent. –

Questions connexes