En utilisant le GPU avec c#
Je suis en train d'essayer d'obtenir plus de puissance de traitement de ma grille.
Je suis en utilisant tous les processeurs/cœurs, est-il possible d'utiliser le GPU avec C#.
Ce que quelqu'un sait tout bibliothèques ou obtenu un exemple de code?
Vous devez vous connecter pour publier un commentaire.
[Modifier OCT 2017 que même cette réponse devient assez vieux]
La plupart de ces réponses sont assez vieux, donc j'ai pensé que je voudrais vous donner une mise à jour résumé de l'endroit où je pense que chaque projet est:
GPU.Net (TidePowerd) - j'ai essayé il y a 6 mois, et n'a le faire fonctionner mais il a fallu un peu de travail. Convertit C# code du noyau de cuda au moment de la compilation. Malheureusement, leur site a été en panne et leur github n'a pas été mis à jour pour un couple d'années, ce qui pourrait indiquer que le projet est mort....
Cudafy - L'Open source et très facile à utiliser. Convertit C# code du noyau de cuda au moment de l'exécution (avec la capacité de sérialiser et cache). Peut facilement exécuter le même code du noyau du CPU (surtout pour le débogage). Prend en charge plusieurs Processeurs graphiques. Des exemples plus disponibles que d'autres ici. Le code réutilisable désigné par d'autres réponses est minime, et dans mon cas au moins aidé avec ma compréhension du fonctionnement du code. Cuda/Nvidia seulement si. Malheureusement, il semble qu'ils n'ont pas de mise à jour de leurs solutions pour un couple d'années (le dernier commit en 2015 -- support de cuda 7.0).
L'Hybridizer. Solution commerciale de la compilation de C# pour CUDA. Gratuit community edition sur visual studio marketplace et d'échantillons github.
AleaGPU Solution commerciale avec une communauté libre édition de consommation GPU. Voir Daniel commentaires pour plus de détails.
Brahma - exécute les expressions LINQ via OpenCL (si prise en charge AMD trop). Pas beaucoup de documentation et des exemples. Dernière mise à jour en 2011.
C$ - dernier développement a été de plus de 10 ans...
Microsoft Accelerator - même ne regarde pas comme il est activement développée plus.
quelques autres (C++ AMP, OpenTK, mort/Cloo) - beaucoup de ces sont juste des liaisons - ie vous permettre d'appeler le GPU à partir de C#, mais votre noyau (le code qui est exécuté sur le processeur graphique) doit être écrit en C ou OpenCL, ce qui signifie que vous devez utiliser (et d'apprendre) une autre langue.
Comme je l'ai dit, je vous recommande Cudafy sur toutes les autres - si il pouvait courir sur OpenCL ainsi que Cuda, il serait parfait.
MODIFIER SEP 2013
Cudafy vous permet désormais de le compiler pour les deux CUDA et OpenCL, il en sera d'exécuter le même code C# sur tous les Gpu. Cela semble fantastique, mais je n'ai pas testé l'OpenCL compilation encore.
Microsoft Research Accélérateur était une .NET GP GPU de la bibliothèque.
J'ai trouvé Brahma... Il a aussi un GPGPU fournisseur qui permet de méthodes pour exécuter sur le GPU... Merci pour la question... Appris quelque chose de nouveau aujourd'hui. 🙂
Pourrait je recommande le XNA Game Studio comme une avenue possible pour l'exploration? Il est évidemment adapté pour l'écriture de jeux, mais vous donne un accès contrôlé à la carte graphique et d'un bien meilleur accès à la capacité de l'énumération de fonctions et de shader de développement que ce qui était précédemment disponible dans, disons, Géré DirectX. Il y a aussi des façons de combiner les WinForms et XNA dans des applications hybrides:
http://www.ziggyware.com/news.php?readmore=866
Vous aurez à faire des efforts dans l'apprentissage de shader de programmation (XNA prend en charge HLSL), mais cela peut être une approche plus simple que d'apprendre un fournisseur de solution spécifique comme nVidia CUDA. L'avantage est que vous pouvez programmer dans un 100% gestion de l'environnement. Voici quelques HLSL liens:
http://www.ziggyware.com/weblinks.php?cat_id=9
Le GPGPU site est également une destination recommandée pour les fins générales de la programmation sur GPU:
http://gpgpu.org/
Bonne chance!
Comment sur http://www.tidepowerd.com/ GPU.NET ?
En voici une autre: CUDAfy. Il sonne comme GPU.Net en ce que quelque chose d'aussi simple que d'une méthode d'attribut peut causer de l'ensemble de la méthode à exécuter sur le processeur graphique. Mais à la différence de GPU.Net, CUDAfy est gratuit et open-source.
GPU.Net semble nécessitent pas de code réutilisable, si (Selon leurs docs, c'est "injecté automatiquement par l'accumulation de l'outil"), tandis que CUDAfy n'.
Ici est un exemple de création d'une application avec CUDAfy.
Eh bien c'est une assez vieille question, et comme il a été demandé les choses ont beaucoup changé.
Une autre option pour les utiliser .Net pour écrire de code GPU, et dont personne n'a mentionné dans les réponses en Alea GPU. Il couvre C#, F# et VB.
En F#, site officiel, l'Alea est le première option pour l'utilisation de F# dans la programmation GPGPU.
Pour arriver à savoir ce cadre, je suggère de prendre un coup d'oeil à sa liste complète de exemples.
En plus de Brahma, jetez un oeil à C$ (prononcé "C Bucks"). De leur CodePlex site:
Il est basé sur le C#, évalué paresseusement, et des cibles multiples accélérateur de modèles:
Il y a une nouvelle solution de Microsoft dans la ville - C++ AMP (intro ici).
Utilisation de C# serait par P/Invoke, comme démontré ici pour les applications de bureau, et ici (n'appelez pas ça) applications Metro.
Edit: je note que le C++ AMP a une spécification ouverte, ce qui signifie qu'il n'est pas nécessairement juste pour le MS compilateur, ou tout simplement pour Windows.
Edit: Apparemment, la technologie est maintenant en "mode maintenance" sens qu'ils sont la correction des bugs, mais pas activement le développement.
Géré DirectX en quelque sorte, de
Si votre Gpu sont tous de la même marque, vous pourriez être en mesure d'obtenir GPGPU de soutien de la part du vendeur, soit par le biais d'Nvidia CUDA ou ATI Stream. Autant que je sache, ils fournissent des DLLs, que vous pouvez utiliser par le biais de P/Invoke.
CenterSpace Logiciel a GPU-alimenté calcul dans leur NMath des bibliothèques, vous pouvez ajouter de projet C#. C'est un produit commercial.
Si vous allez appliquer votre propre algortihms que les besoins des noyaux personnalisés:
J'ai récemment téléchargé un projet open-source de la mine de ce dépôt github qui utilise OpenCL.
Ce qu'il fait(vous pouvez vérifier à partir de sa page wiki) est, en sélectionnant plusieurs compatible OpenCL périphériques et d'un noyau de chaîne à partir de l'utilisateur et de créer de C# ou C++ tableau des wrappers de calculer à l'aide de tous, avec l'aide d'un auto-équilibrage de charge et une
pipeliner(pour masquer les latences) pour obtenir une bonne efficacité de la pc.
Voici un exemple de son utilisation(1024 workitems partitionné pour tous les appareils, chacun exécutant le même code, mais l'utilisation des données différentes et threadId):
quand tout n'est pas plus utilisé, ils libèrent tous C++ ressources avec leurs destructeurs.
Mais il n'est pas mature, donc n'hésitez pas à ajouter tout "problème" sur github questions onglet.
Multi-pc-cluster classes ne sont pas de travail et pas traduit de l'anglais encore, mais il peut utiliser tous les périphériques de pc à moins.
WPF utilise le GPU et vous pouvez ajouter personnalisé en utilisant les shaders HLSL.