comment utiliser mon code .cpp existant avec cuda

Je code hv en c ++ et je voulais l’utiliser avec cuda.Can quelqu’un s’il vous plaît aidez-moi? Dois-je fournir mon code ?? En fait, j’ai essayé de le faire, mais j’ai besoin d’un code de départ pour mon code.Je sais comment faire un programme carré simple (avec cuda et c ++) pour Windows (Visual Studio) .Est-il suffisant de faire les choses pour mon programme?

Voici les deux bons endroits pour commencer. CUDA by Example est un bon tutoriel qui vous permet de démarrer rapidement. La programmation de processeurs massivement parallèles inclut plus de fond, par exemple des chapitres sur l’historique de l’architecture GPU, et généralement plus en profondeur.

CUDA par exemple: Introduction à la programmation GPU à usage général

Programmation de processeurs massivement parallèles: une approche pratique

Ils parlent tous les deux de CUDA 3.x et vous aurez donc envie d’examiner les nouvelles fonctionnalités de CUDA 4.x à un moment donné.

La poussée vaut vraiment la peine d’être examinée si votre problème se pose bien (voir le commentaire ci-dessus). C’est une bibliothèque de conteneurs, d’iterators et d’algorithmes de type STL qui implémente des algorithmes parallèles de données au-dessus de CUDA.

Voici deux tutoriels sur la prise en main de CUDA et Visual C ++ 2010:

http://www.ademiller.com/blogs/tech/2011/03/using-cuda-and-thrust-with-visual-studio-2010/

http://blog.cuvilib.com/2011/02/24/how-to-run-cuda-in-visual-studio-2010/

Il y a aussi un post sur le forum NVIDIA:

http://forums.nvidia.com/index.php?showtopic=184539

Demander de manière très générale comment commencer … sur Stack Overflow n’est généralement pas la meilleure approche. Typiquement, la meilleure réponse que vous obtiendrez est “allez lire un livre ou le manuel”. C’est beaucoup mieux de poser des questions spécifiques ici. S’il vous plaît ne créez pas de questions en double, ce n’est pas utile.

Convertir un programme directement en C (++) en CUDA est une tâche non-sortingviale. Autant que je sache, il est possible d’utiliser du C ++ dans CUDA (en particulier avec CUDA 4.0 annoncé), mais je pense qu’il est plus facile de commencer avec du C (struct, pointeurs, types de données élémentaires).

Commencez par lire le guide de programmation CUDA et en examinant les exemples fournis avec le SDK CUDA ou disponibles ici . J’ai personnellement trouvé l’échantillon d’addition de vecteur assez éclairant. On peut le trouver ici .

Je ne saurais vous dire comment écrire vos s global et shared pour votre programme spécifique, mais après avoir lu le matériel d’introduction, vous aurez au moins une vague idée de la marche à suivre.

Le problème est qu’il n’est pas possible (à ma connaissance, de décrire de manière générique la transformation de C (++) pur en un code adapté à CUDA. Mais voici quelques pierres angulars pour vous:

  • Idée maîtresse de CUDA: les boucles peuvent être transformées en différents threads exécutés plusieurs fois en parallèle sur le GPU.
  • Par conséquent, les itérations uniques sont optimalement indépendantes des autres itérations.
  • Pour une exécution optimale, les twigs d’exécution uniques des threads doivent être (presque) identiques, c’est-à-dire que les threads uniques devraient faire presque de même.

Vous pouvez avoir plusieurs fichiers .cpp et .cu dans votre projet. À moins que vos fichiers .cu ne contiennent que du code de périphérique, cela devrait être assez simple.

Pour vos fichiers .cu, vous spécifiez un fichier d’en-tête contenant des fonctions d’hôte. Ensuite, incluez ce fichier d’en-tête dans d’autres fichiers .cu ou .cpp. L’éditeur de liens fera le rest. Ce n’est pas différent d’avoir plusieurs fichiers C ++ .cpp simples dans votre projet.

Je suppose que vous avez déjà des fichiers de règles CUDA pour votre Visual Studio.