Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1508 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  OpenCL et C++ (héritage)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

OpenCL et C++ (héritage)

n°2014613
fdocteur
Posté le 05-08-2010 à 18:16:02  profilanswer
 

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
mood
Publicité
Posté le 05-08-2010 à 18:16:02  profilanswer
 

n°2014622
codablank
Posté le 05-08-2010 à 20:11:01  profilanswer
 

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
n°2014633
fdocteur
Posté le 05-08-2010 à 21:05:02  profilanswer
 

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
n°2014664
singletonn​e
Posté le 06-08-2010 à 01:50:19  profilanswer
 

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
n°2014695
fdocteur
Posté le 06-08-2010 à 09:37:00  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  OpenCL et C++ (héritage)

 

Sujets relatifs
problème d'héritageC# obtenir l'IP d'une interface spécifique par son nom "window"
[C] Multi-client/Serveur que choisir ?programmation réseau C++ multiplateforme
boucle pour ouvrir plusieurs fichiers en CLa video avec JAVA/JVM c'est possible?
[ASP .Net / C#] Gridview : Personnalistation du Pager[C++] #include -> Type inconnu
[Ada+C] Storage Error à la lecture d'une entrée Midi en C via Ada[C] passage par adresse de chaines de caracteres (résolu)
Plus de sujets relatifs à : OpenCL et C++ (héritage)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR