Bonsoir à tous!
Alors je vous expose mon problème:
Souhaitant en savoir plus sur CUDA, j'ai téléchargé le "CUDA Toolkit" ainsi que le "CUDA SDK"
Le Toolkit permet il me semble d'utiliser nvcc tandis que le SDK réunis beaucoup d'exemple.
Bref, j'ai à ma disposition Visual Studio C++ 9.0 Express Edition auquel j'ai ajouté l'extension .cu pour ouvrir les fichiers CUDA
Et c'est la que ça cafouille, je ne comprend pas comment on peut avoir accès au code en lui même sous VS ce qui donc m'empêche de sortir un exécutable en mode "émulation" (je n'ai pas de cg pour CUDA)
De plus certains fichiers demande à être convertis sous VS 9.0 car écrit dans une ancienne version, et la c'est le drame je me retrouve avec des fichiers qui déborde de partout
Quelqu'un pourrait me donner un avis éclairé sur la question?
Merci
Oups je crois avoir trouvé.
Il me suffisait de parcourir l'arborescence jusqu'a double cliquer sur le fichier.cu pour voir le code s'inscrire sous VS
Je vous prie donc de m'excuser.
Cependant quelqu'un pourrait me décrire comment on compile sous VS avec l'aide de nvcc auquel s'ajoute cette commande:
make emu=1
(elle permet d'utiliser l'émulateur)
Merci
Non j'éprouve toujours un problème godrik.
Je souhaite en faite utiliser le mode émulation du compilateur afin de faire tourner le programme CUDA sur le CPU seulement, pour cela il faut utiliser cette commande:
nvcc -deviceemu -g <filename>.cu
Le problème c'est que je ne vois pas comment prendre un fichier .cu seul (dans le SDK les fichiers .cu concernent ce qui va etre executé dans les threads du GPU)
Autre problème, il semblerait qu'il faille "linker" certaines instruction CUDA avec VS C++ afin qu'il prenne en charge ce langage (ceci dit à la compilation j'ai bien inscrit "nvcc machin truc" dans la fenetre du bas, mais aucun fichier .exe ne daigne sortir)
Enfin bref, j'y arriverai en lisant finement la doc sur nvidia
Je crois que personne n'utilise cuda ici, donc on ne peut pas t'aider. (même si j'ai envie de tester ça depuis longtemps, mais vu que je n'ai pas la carte graphique qu'il faut, je ne l'ai pas fait).
Je vias peut etre donne un cours de programmation cell/GPGPU l'annee prochaine. Mais pour l'instant je n'y connais rien. ![]()
C'est en enseignant qu'on apprend le mieux !
dnob tu peut déja prendre une longueur d'avance dans l'apprentissage de CUDA.
Moi aussi je n'ai pas de GPU compatible, mais on peut toutefois avoir une vision de ce que peut donner le programme via l'émulation (certe les performances seront ridicule) mais cela permet de voir si le code tourne bien.
Sinon l'avenir annonce de bonnes choses, notamment grâce à OpenCL et a DX11 qui permettront d'exploiter les GPUs et CPUs multicores sans se soucier des problèmes liés à l'archi.
"Sinon l'avenir annonce de bonnes choses, notamment grâce à OpenCL et a DX11 qui permettront d'exploiter les GPUs et CPUs multicores sans se soucier des problèmes liés à l'archi."
arf.
Ca c'est ce que le marketing essaye de te faire croire. En pratique ca ne va pas etre si simple. La programmation parallele est quelquechose de complique et aucune API ne permettra d'exploiter efficacement et facilement les architectures paralleles. Il faudra reecrire les applicatin pour les rendre paralleles. Ceux qui essayent de te faire crorie que tu va ecrire ton code comme si il etait sequentiel avec l'API qui va biene t que tu vas obtenir le meilleur de ton architecture te ment.
Oui et non. Parce que quad même dans une large gamme de problème numérique (et donc souvent les plsu intensif en calcul), il est possible de paralléliser facilement le code sur une architecture scalaire (SSE aujourd'hui, mais pourquoi pas GPU demain, je ne sais pas ce que fait CUDA). En tout cas le compilo intel le fait déjà assez bien, donc ça pourrait être fait sur d'autre plateforme.
D'autre part, certains langage permette d'écrire des algorithme parallèle de façon assez abstraite de l'architecture, même si chaque api ne peut pas s'adapter à n'importe quelle plateforme, la multiplication des outils pourrait aider (par exemple, openMP pourrait très bien être adapté sur GPU (peut-être avec des restriction de ce qu'on à le droit de mettre dans des boucles), tandis que ce n'est pas le cas de MPI, du moins ça semble moins adapté).
Mais il est vrai que produire de bons algorithmes parallèle est et restera probablement toujours compliqué (c'est pour ça que je préfère toujours une approche parallèle SMP, à la façon des GPU, car un programme est concurrent sur une "longueur" plus courte).
Bon, j'essayerais peut-être de tester cuda.
Les architectures moderne ne sont pas a memoire uniforme. il faut deplacer les donnees d'un banc memoire a l'autre ou les affecter au bon endroit. Ca apparait pour des problemes aussi simple qu'un tri d'entier. Le bon placement des donnes te fait facilement gagner 20% d'efficacite. Malheureusement il repose sur des regles propre a l'algorithme, au type de donnee et a la plateforme.
Les normes/langages/API de parallelisme sont destine a simplifier la vie du programmeur en terme d'ecriture de code mais ca ne simplifie pas l'obtention de bonne performance. En quelques sortes, c'est moins complique mais c'est toujours aussi complexe.
Nouvelle version
http://s2.noelshack.com/uploads/images/13248210636441_kanulia1.jpg
a dl ici
http://code.google.com/p/kanulia/downloads/list
a l'heure ou je post, il s'agit de la version 1.1.7
Toujours pareil, ce que je vous demande, c'est est ce que ca marche. Il y a deux version:
kanulia.exe compilé sur XP 32 en CUDA 2.1
kanulia7.exe compilé sur 7 64 en CUDA 3.0
ce qui m'intéresse, c'est est ce que ca marche ?
si oui
quel exe marche ? que voyez vous ? quel est votre 0S, 32 ou 64, votre CG et si vous avez un sdk CUDA, lequel.
si non
que dit la console dos ( il faut lancer en ligne de commande pour le savoir ) ou si une message box apparait que dit elle ? etc
et pareil, quel OS, quelle CG
merci pour d'avance pour ceux qui testerons
Salut,
Cuda c'est plutôt pour les développeurs expérimentés.
Voici un article d'introduction à CUDA pour débuter : http://tcuvelier.developpez.com/gpgpu/cuda/introduction/
Tu trouvera aussi de l'aide dans la F.A.Q CUDA : http://jeux.developpez.com/faq/gpgpu/
Tu trouvera les développeurs Cuda sur le forum Cuda : http://www.developpez.net/forums/f1406/applications/developpement-2d-3d-jeux/calculs-processeurs-graphiques/cuda/
Bon courage ![]()
Le sujet a évolué depuis le premier post... C'est pas mal de lire les messages avant de répondre.
chacharles31 : ton programme à l'air impressionnant. Je l'essayerais la prochaine fois que je boot sous windows.
Pour moi, kanulia.exe crash au lancement sans message. kanulia7.exe crash également avec le message ".\kanulia.cpp(1021) : cudaSafeCall() Runtime API error : CUDA version is insufficient for CUDART version."
Il faut un SDK CUDA pour exécuter ton programme, ou les dll sont sensées suffire?
Ma config: Windows 7 32 bits, GeForce 9650M GT.
Isukthar, je pense que tu n'as pas la version la plus recente des dll cuda
merci Isukthar
Comme dit godrik, ca devrait etre ta version de CUDA
En l'occurence, c'est la version des drivers NVIDIA
Mais je me méfie, la frontiere entre "redistribuables" et partie intégré aux drivers a changé entre les versions de CUDA.
C'est un vrai casse tete de faire une appli portable
Bon, l'update ne me trouvait pas de nouveau driver, par contre en installant manuellement les derniers drivers, l'update en trouve de plus récents... assez bizarre.
Donc le programme se lance, dans la console il y a les passes qui défilent.
Par contre je comprend pas trop ce qui doit s'afficher dans la fenêtre de rendu. La fractale s'affiche en miniature mais au milieu j'ai toujours une demi-sphère.
Autre truc bizarre, le comptage des fps: je suis parfois dans les 9 fps puis par moment ça passe quelques secondes à plusieurs milliers de fps.
Voila, si ça t'aide.
La demi sphere, ca doit etre kanulia.exe
Kanulia7.exe devrait mieux marcher.
Les fps qui explosent, c'est normal. C'est quand il fait plus rien, il tourne a toute allure en comptant le nombre de pass par seconde.
Content d apprendre qu'une maj driver permet de lancer le programme.
Bouton droit + help donne la liste des commandes
A mon avis kanulia.exe est foiré. Nvidia reconnait un bug.
PS: je suis arrivé a me gourrer de topic. Dsl a l auteur de celui ci pour le detournement
Si kanulia7 est en 64 bits, il ne devrait pas marcher sur mon OS 32 bits. En tout cas, quand je le lance j'ai une erreur "Cuda error in file '.\kanulia.cpp' line 1126 invalid device symbol"
Par contre kanulia.exe semble marcher sur mon pc.
L'auteur c'est moi-même et au contraire je suis très heureux de voir un programmeur sous CUDA. Je ferais en sorte de tester ton prog sur une GTX275.