10
votes

Existe-t-il une possibilité d'écrire des applications GPU à l'aide de Cuda sous F Sharp?

Je suis intéressé à utiliser F # pour calcul numérique. Comment puis-je accéder au GPU à l'aide de Cuda Standart de Nvidia sous F #?


0 commentaires

6 Réponses :


3
votes

Accelerator de MS vous permet de tirer parti des GPU, alors peut le faire quelque chose comme ça, bien que vous ne puissiez pas utiliser cuda. ​​


0 commentaires

5
votes

Autre alternative, vous pourriez envisager d'utiliser DirectCompute. Les trois grands API GPU: Cuda, Opencl et DirectCompute sont tous très similaires. DirectComputer peut facilement être accessible de F # via Slimdx, une enveloppe .NET pour DirectX.


1 commentaires

-1 DirectCompute est le plus récent et le moins documenté des trois API GPU. Ce n'est pas vraiment recommandable en ce moment.



2
votes

Vous pouvez regarder Cuda.net. Cela vous permettrait d'utiliser Cuda directement de F #. Il peut être trouvé ici: http://www.hoopoo-cloud.com/solutions/cuda.net /Default.aspx

L'autre alternative habituelle pour l'utilisation de CUDA à partir du code géré consiste à encapsuler la fonctionnalité CUDA dans une DLL natif, puis à p / invoquez ou écrivez un wrapper C ++ / CLI autour de celui que vous utilisez ensuite à partir de par E.G. votre programme F #.


0 commentaires

7
votes

Je suis d'accord avec Jasper que l'option la plus simple est actuellement d'utiliser l'accélérateur de Microsoft Research. J'ai écrit une série d'articles sur l'utilisation de F #. une introduction simple et directe , Game of Life Exemple, plus Exemple avancé à l'aide de citations et un exemple de Utiliser des fonctions de citation avancées . Satnam Singh's Blog est également une excellente ressource avec certaines démos F #.

Un problème avec les cartes graphiques actuelles est qu'ils ne prennent pas en charge les entiers (par conséquent, l'accélérateur ne supporte que lorsqu'il est en cours d'exécution à l'aide d'un moteur parallèle optimisé x64). En outre, les cartes graphiques actuelles n'impliquent pas les nombres de points flottants en fonction des normes IEEE - ils essaient d'être plus rapides en faisant un peu de "devinations", ce qui n'a pas d'importance lors du calcul de la position du triangle, mais pourrait être un problème si vous 'Regation des calculs financiers. (L'accélérateur peut utiliser divers objectifs afin que vous soyez en sécurité si vous utilisez le moteur parallèle X64).

Autant que je sache, DirectCompute nécessitera une mise en œuvre précise d'arithmétiques à virgule flottante ainsi que de la prise en charge directe des entiers, ce qui pourrait être un bon choix à l'avenir (ou si l'accélérateur commence éventuellement à utiliser DirectCompute comme moteur).


5 commentaires

Êtes-vous sûr que le problème de point flottant persiste toujours sur la nouvelle génération de Fermi Nvidia (de GTX 460 ON)? Ils ont affirmé avoir introduit un appui amélioré d'arithmétiques à double précision sur Fermi.


@Martin: Je ne suis pas sûr de la dernière génération de GPU. Peut-être qu'ils ont déjà réparé cela - il serait utile d'avoir des garanties claires.


Je peux vous assurer que toutes les générations DX10 et DX11 prennent en charge la précision entière 32 bits. DERNIÈRE DX11 GEN (AMD / ATI et NVIDIA SUPPORT IEEE 754-2008), ce qui signifie une ajout de Fususe-Multiplement et de toutes les trucs fantaisistes.


-1 pour information qui ne va pas. Les derniers GPU sont entièrement conformes à IEEE et ils soutiennent les entiers. Qui vote cette merde?


En outre, l'accélérateur parle toujours simplement de GPU DX9. DX10 et DX11 GPU offrent beaucoup plus de choses et bien meilleures options pour la programmation GPU.



6
votes

Probablement uniquement des geeks GPU hardcore comme moi en ont entendu parler. TidePowerd - Lien mort a rendu GPGPU possible pour les langages de CIL (tels que f #, c #, vb.net, peu importe). D'autre part, vous pouvez faire la même chose pour la seule langue F # avec un devis / API de devis / GPU (hâte de voir quelqu'un de mettre en œuvre cela). C'est quelque chose que Agent Smith a blogué À propos de ou qui est également mentionné dans le livre F # Expert 1.0 (Chapitre de programmation orienté sur la langue) AFAIK.

Agent Smith (OK, désolé pour cela) parle de Nvidia CG. Mais vous pouvez faire la même chose à utiliser HLSL DirectCompute Shaders ou Opencl C99 .. PTX (NVIDIA NVIDIA IL), CAL-IL (Niveau bas AMD / ATI) ...


0 commentaires

2
votes

Pour des raisons de documentation (c'est une ancienne question avec des réponses qui ne couvrent pas le paysage technologique actuel), si vous avez dû écrire des applications GPU / Cuda aujourd'hui, une autre option à considérer est Aleagpu.


0 commentaires