J'essaie d'obtenir plus de puissance de traitement de ma grille.
J'utilise tous les cpus/cores, est-il possible d'utiliser le GPU avec C#.
Quelqu'un connaît-il une bibliothèque ou un exemple de code ?
J'essaie d'obtenir plus de puissance de traitement de ma grille.
J'utilise tous les cpus/cores, est-il possible d'utiliser le GPU avec C#.
Quelqu'un connaît-il une bibliothèque ou un exemple de code ?
La plupart de ces réponses sont assez anciennes, j'ai donc pensé donner un résumé actualisé de l'état d'avancement de chaque projet :
GPU.Net (TiredPowerd) - J'ai essayé cela il y a environ 6 mois, et j'ai réussi à le faire fonctionner bien que cela ait demandé un peu de travail. Convertit le code du noyau C# en cuda au moment de la compilation. Malheureusement, leur site web est en panne depuis quelques mois, ce qui est un mauvais signe.....
Cudafy ( recommandé ) - Source ouverte et très facile à utiliser. Convertit le code C# du noyau en cuda au moment de l'exécution (avec possibilité de sérialisation et de cache). Peut facilement exécuter le même code noyau sur le CPU (principalement pour le débogage). Supporte plusieurs GPU. Plus d'exemples disponibles que les autres ici. Le code passe-partout mentionné par les autres réponses est minimal et, dans mon cas, il m'a aidé à comprendre le fonctionnement du code. Cuda/Nvidia uniquement.
Brahma - exécute les expressions LINQ via OpenCL (donc supporte aussi AMD). Peu de documentation / exemples.
C$ - la dernière évolution remonte à plus de 5 ans...
Microsoft Accelerator - il ne semble plus être activement développé.
d'autres (C++ AMP, OpenTK/Cloo) - beaucoup d'entre eux ne sont que des liens, c'est-à-dire qu'ils vous permettent d'appeler le GPU à partir de C#, mais votre code noyau (code qui est réellement exécuté sur le GPU) doit être écrit en C ou OpenCL, ce qui signifie que vous devez utiliser (et apprendre) un autre langage.
Comme je l'ai dit, je recommanderais Cudafy plutôt que tous les autres. S'il pouvait fonctionner sur OpenCL aussi bien que sur Cuda, il serait parfait.
EDIT SEP 2013 Cudafy vous permet maintenant de compiler pour les deux CUDA et OpenCL, ce qui permet d'exécuter le même code C# sur tous les GPU. Cela semble fantastique, même si je n'ai pas encore testé la compilation OpenCL.
Microsoft Research Accélérateur est une bibliothèque GPU .NET. L'article est disponible à l'adresse suivante ftp://ftp.research.microsoft.com/pub/tr/TR-2005-184.pdf .
J'ai trouvé Brahma ... Il dispose également d'un fournisseur GPGPU qui permet aux méthodes de s'exécuter sur le GPU... Merci pour cette question... J'ai appris quelque chose de nouveau aujourd'hui :)
Puis-je vous recommander XNA Game Studio comme une piste à explorer ? Il est évidemment destiné à l'écriture de jeux, mais il vous donne un accès géré à votre carte graphique et un accès bien meilleur aux fonctions d'énumération des capacités et au développement de shaders que ce qui était auparavant disponible dans, disons, Managed DirectX. Il existe également des moyens de combiner WinForms et XNA dans des applications hybrides :
http://www.ziggyware.com/news.php?readmore=866
Vous devrez faire quelques efforts pour apprendre la programmation des shaders (XNA prend en charge HLSL), mais cette approche est peut-être plus simple que l'apprentissage d'une solution spécifique à un fournisseur, comme CUDA de nVidia. L'avantage est que vous pouvez programmer dans un environnement géré à 100 %. Voici quelques liens HLSL :
http://www.ziggyware.com/weblinks.php?cat_id=9
Le site GPGPU est également une destination recommandée pour la programmation GPU à usage général :
Bonne chance !
En voici un autre : CUDAfy . Il ressemble à GPU.Net, dans la mesure où un simple attribut de méthode peut entraîner l'exécution de la méthode entière sur le GPU. Mais contrairement à GPU.Net, CUDAfy est gratuit et open-source.
GPU.Net semble ne nécessiter aucun code passe-partout, bien que (Selon leur documentation, il est "injecté automatiquement par l'outil de construction"). alors que CUDAfy le fait.
Ici est un exemple de création d'une application avec CUDAfy.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.