OpenCL et C++ (héritage)

OpenCL et C++ (héritage) - C++ - Programmation

Marsh Posté le 05-08-2010 à 18:16:02    

Bonjour à tous :hello:,
 
j'ai une petite question noobesque restée sans réponse concernant la compatibilité d'OpneCL et le C++. Plus spécifiquement, est ce qu'OpenCL gère le c++ et l'héritage des classes sur la carte graphique?
 
Je sais que CUDA gère intègralement le C++ sur le CPU mais que partiellement sur la carte graphique (dont l'héritage :) ) d'où ma question....
 
=> j'hésite entre CUDA et OpenCL pour du code surla cg :)


---------------
ACH/VDS - FeedBack
Reply

Marsh Posté le 05-08-2010 à 18:16:02   

Reply

Marsh Posté le 05-08-2010 à 20:11:01    

ce ne sont pas directement cuda ou opencl qui gèrent la manière dont ils sont implémentés, puisqu'il ne s'agit que de spécifications;  
 
http://fr.wikipedia.org/wiki/GPGPU
http://fr.wikipedia.org/wiki/OpenCL
http://fr.wikipedia.org/wiki/Compu [...] chitecture
 
si tu veux une implémentation de ces API, il faut te référer aux constructeurs de GPU, soit AMD et Nvidia qui proposent des libs ad hoc (par exemple stream pour AMD)
 
Khronos propoose un binding C++ pour OpenCL dont tu peux trouver les spec ici http://www.khronos.org/registry/cl/;
 
mais peut-être ais-je mal compris ta question, tu veux faire du C++ sur la carte graphique, cad dans les kernels ?  :heink:

Message cité 1 fois
Message édité par codablank le 05-08-2010 à 20:12:45
Reply

Marsh Posté le 05-08-2010 à 21:05:02    

codablank a écrit :

ce ne sont pas directement cuda ou opencl qui gèrent la manière dont ils sont implémentés, puisqu'il ne s'agit que de spécifications;  
 
http://fr.wikipedia.org/wiki/GPGPU
http://fr.wikipedia.org/wiki/OpenCL
http://fr.wikipedia.org/wiki/Compu [...] chitecture
 
si tu veux une implémentation de ces API, il faut te référer aux constructeurs de GPU, soit AMD et Nvidia qui proposent des libs ad hoc (par exemple stream pour AMD)
 
Khronos propoose un binding C++ pour OpenCL dont tu peux trouver les spec ici http://www.khronos.org/registry/cl/;
 
mais peut-être ais-je mal compris ta question, tu veux faire du C++ sur la carte graphique, cad dans les kernels ?  :heink:


Tout d'abord merci pour ta réponse :jap: (en espérant que d'autres viendront aussi :) )
 
Oui, c'est exactement ça; j'ai besoin de faire tourner des kernels C++ afin de gérer l'héritage.
En clair, j'ai un programme en C++ que je dois faire tourner sur le gpu. Les calculs sont parallèles donc ça s'y prête bien. Le problème est qu'il utilise des types élaborés autres que ceux pouvant être manipulés par CUDA. (j'ai commencé avec CUDA pensant que OpenCL n'était pas compatible C++). Je dois donc réécrire ces types et pour cela j'aurais besoin d'héritage afin qu'ils soient "manipulés" par le gpu dans mes kernels. :)


---------------
ACH/VDS - FeedBack
Reply

Marsh Posté le 06-08-2010 à 01:50:19    

Hello,
 
En OpenCL tu n'as aucune fonctionnalité propre du C++ (même les templates, à mon grand désespoir!).
En l'état actuel des choses, je ne peux que te conseiller CUDA qui est beaucoup plus mature que OpenCL... du moins l'implémentation par nvidia d'OpenCL sur leurs CG laisse à désirer rien qu'au niveau performances : leur compilo OpenCL est nettement moins intelligent que nvcc (perso j'ai des chutes de perfs non négligeables même sur des kernels pas trop méchants). Et je ne parle pas de la version beta d'OpenCL 1.1 qu'ils ont sorti il y a quelques semaines, il y a du mieux mais aussi de grosses régressions pour l'instant.
 
 
Par contre, ne t'attend pas à un support complet du C++ en CUDA tu risquerais d'être déçu, même si *beaucoup* de choses sont supportées !  :)  
 
En tous cas, si ton programme ne doit pas tourner ailleurs que sur CG nvidia, tu n'as strictement aucune raison de choisir OpenCL, à part si tu es objecteur de conscience (standard ouvert, tout ça :D)
De plus, si tu débutes, CUDA est quand même plus rapide à prendre en main qu'OpenCL, et pour trouver de l'aide sur le net, ben CUDA c'est nettement mieux!

Message cité 1 fois
Message édité par singletonne le 06-08-2010 à 01:53:13
Reply

Marsh Posté le 06-08-2010 à 09:37:00    

Wahou Merci pour ta réponse qui me confirme dans mes pensées... :jap:
 

singletonne a écrit :

Hello,
 
En OpenCL tu n'as aucune fonctionnalité propre du C++ (même les templates, à mon grand désespoir!).
En l'état actuel des choses, je ne peux que te conseiller CUDA qui est beaucoup plus mature que OpenCL... du moins l'implémentation par nvidia d'OpenCL sur leurs CG laisse à désirer rien qu'au niveau performances : leur compilo OpenCL est nettement moins intelligent que nvcc (perso j'ai des chutes de perfs non négligeables même sur des kernels pas trop méchants). Et je ne parle pas de la version beta d'OpenCL 1.1 qu'ils ont sorti il y a quelques semaines, il y a du mieux mais aussi de grosses régressions pour l'instant.
 
 
Par contre, ne t'attend pas à un support complet du C++ en CUDA tu risquerais d'être déçu, même si *beaucoup* de choses sont supportées !  :)  
 
En tous cas, si ton programme ne doit pas tourner ailleurs que sur CG nvidia, tu n'as strictement aucune raison de choisir OpenCL, à part si tu es objecteur de conscience (standard ouvert, tout ça :D)
De plus, si tu débutes, CUDA est quand même plus rapide à prendre en main qu'OpenCL, et pour trouver de l'aide sur le net, ben CUDA c'est nettement mieux!



---------------
ACH/VDS - FeedBack
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed