8 votes

Puis-je utiliser les cœurs du GPU à partir de c# SANS modifier le code ?

Je me rends compte qu'il y a plusieurs questions sur ce sujet mais je pense que mon angle est unique.

J'ai une application C# mature que j'utilise pour le calcul de chiffres scientifiques. Dans le code, je lance 24 threads C# sur ma station de travail 24 HyperThread (c'est-à-dire que j'ai 2 CPU avec chacun 6 cœurs/12 threads). J'utilise Windows 7 et il gère cela brillamment - je suis capable d'utiliser toute ma puissance de traitement pour faire mon travail.

Je vois que certains GPU annoncent "448 cœurs". Si j'en achète un, mon application C# pourra-t-elle l'utiliser ? Je veux dire sans réécrire mon code de manière importante. Les threads que je lance seraient-ils pris en charge par les cœurs du GPU au lieu des HyperThreads du CPU comme c'est le cas actuellement ?

QUESTION DE SUIVI

Bonjour, j'apprécie les réponses que je reçois - même si elles sont négatives.

Y a-t-il un autre matériel auquel je devrais penser (pas trop cher) qui me donnerait un grand nombre de cœurs, mais qui serait capable d'exécuter mon code C# sans réécriture ?

3voto

Davos555 Points 1954

Il faudrait vraiment réécrire votre code pour utiliser un gpu. Ces liens peuvent être utiles :-

CUDA .NET - La fonctionnalité CUDA à travers les applications .NET.

CUDA Sharp - wrapper C# pour nVidia Toolkit

Elles sont basées sur le système CUDA de nVidia, ce qui nécessite bien sûr une carte nVidia.

2voto

minitech Points 87225

Heh... non. Pas moyen, pas comment. Ces "cœurs" ne sont pas les mêmes. Pour profiter des avantages du calcul par le GPU, vous devez écrire vos calculs d'une manière très spécifique. Essayez OpenCL peut-être. Mais la réponse à votre question est non.


En ce qui concerne votre montage, la seule chose possible avec peu de changements (selon la façon dont vous l'avez actuellement structuré) est un processeur. Si vous ne faites pas de logiciel général, vous pourriez probablement faire tourner 48 cœurs individuels non-HT. Mais ce n'est peut-être pas le goulot d'étranglement. Vous pourriez augmenter votre RAM pour que tout soit généralement plus rapide jusqu'à un certain point.

1voto

JaredPar Points 333733

Non. Les threads .Net ne tireront pas automatiquement parti des cœurs de GPU pour le traitement. Ils sont très différents des cœurs de processeur normaux. Vous devez modifier votre programme pour tirer parti du traitement par le GPU.

Prograide.com

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.

Powered by:

X