Programmation CUDA C

Fermé
samehb Messages postés 14 Date d'inscription vendredi 13 décembre 2013 Statut Membre Dernière intervention 23 janvier 2014 - 14 déc. 2013 à 15:22
samehb Messages postés 14 Date d'inscription vendredi 13 décembre 2013 Statut Membre Dernière intervention 23 janvier 2014 - 15 déc. 2013 à 23:22
Bonjour,
J'ai besoin pour m'aider dans mon travail (programmation CUDA C)
svp
A voir également:

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
14 déc. 2013 à 15:26
Salut, "J'ai besoin pour", pardon, mais tu as besoin de quoi?
Au passage, ce travail, c'est un exo à rendre?
0
samehb Messages postés 14 Date d'inscription vendredi 13 décembre 2013 Statut Membre Dernière intervention 23 janvier 2014
14 déc. 2013 à 18:11
Je trouve difficulté la programmation de C à CUDA C

c'est mon code en C :


5. #include <stdlib.h>
6. #include <stdio.h>
7. #include <windows.h>
8. #include <time.h>
9. #define LARGEUR 1024
10. #define HAUTEUR 1024
11. #define DISPLAYTOOL "displayTool\\display.exe"
12.
13. int main()
14. {
15. unsigned char image [LARGEUR][HAUTEUR];
16. unsigned char imageT[LARGEUR][HAUTEUR];
17. char nomFichier[] = "images\\lena.raw";
18. char nomFichierT[] = "images\\res.raw";
19. int x, y, i, j;
20. FILE* fichier;
21. int pixel;
22. char str[256];
23. clock_t start_n, end_m;
24. double time_used_n;
25.
26. printf( "\n----------[ DEBUT DU PROGRAMME ]----------\n" );
27. start_n=clock();
28. fichier = fopen( nomFichier, "rb" );
29. if( fichier==0 )
30. {
31. printf( "Desole, mais le fichier est introuvable ! Le programme va s'arreter..." );
32. return 1;
33. }
34. printf( ">> Lecture de l'image \"%s\" [", nomFichier );
35. for( y=0; y<HAUTEUR; y++ )
36. {
37. printf( "." );
38. for( x=0; x<LARGEUR; x++ ) {
39. image[x][y] = fgetc(fichier);
40. }
41. end_n=clock();
42. }
43. fclose(fichier);
44. printf( "]\n>> Lecture de l'image terminee !\n" );
45.
46. printf( "\n>> Traitement en cours...\n" );
47. printf( ">> Traitement termine...\n\n" );
48. fichier = fopen( nomFichierT, "w+b" );
49. if( fichier==0 )
50. {
51. printf( "Desole, mais le fichier ne peut etre ouvert en ecriture..." );
52. return 1;
53. }
54. printf( ">> Ecriture de l'image \"%s\" [", nomFichierT );
55. for( y=0; y<HAUTEUR; y++ )
56. {
57. printf( "." );
58. for( x=0; x<LARGEUR; x++ )
59. {
60. if(image[x][y]>=146)
61. pixel = 255 ;
62. else
63. pixel = 0 ;
64. imageT[x][y] = pixel;
65. fputc(imageT[x][y], fichier);
66. }
67. fclose( fichier );
68. printf( "]\n>> Ecriture de l'image terminee !\n" );
69. printf( "\n----------[ FIN DU PROGRAMME ]----------\n" );
70. end_n=clock();
71. time_used_n=((double)(end_n-start_n))/CLOCKS_PER_SEC;
72. printf("time_used_n=\n \t %lf \n",time_used_n);
73.
74. sprintf( str, "\"%s\" -%d -%d", nomFichier, LARGEUR, HAUTEUR );
75. ShellExecute(NULL, "open", DISPLAYTOOL, str, NULL, SW_SHOWDEFAULT);
76. sprintf( str, "\"%s\" -%d -%d", nomFichierT, LARGEUR, HAUTEUR );
77. ShellExecute(NULL, "open", DISPLAYTOOL, str, NULL, SW_SHOWDEFAULT);
78. system("pause");
79. return 0;80. }
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
14 déc. 2013 à 22:13
J'ai pas dit que j'allait faire le boulot à ta place (j'aime pas CUDA, vive OpenCL).
Et là tu ne se sembles pas avoir compris à quoi sert CUDA, et comment s'en servir: ce code n'est pas et ne sera jamais traduisible dans son intégralité en CUDA C vu qu'il se sert de diverses fonctions de lecture de fichier, de sortie console et d'API propriétaire Windows.
Dans quel contexte, à quel besoin dois-tu répondre pour devoir utiliser CUDA?
0
samehb Messages postés 14 Date d'inscription vendredi 13 décembre 2013 Statut Membre Dernière intervention 23 janvier 2014
15 déc. 2013 à 18:50
programmation parallèle avec CUDA C est un sujet de mon mémoire de mastère
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 15/12/2013 à 18:58
Et bien, tu sembles t'être lancé dans quelque chose que tu ne maitrises pas trop... Quelle partie de ce code faudrait-il traduire en CUDA C? Et surtout, bien ce ce code soit un exemple je suppose, quel en serait l'intéret? Y aurait-il un gain de performance?
Avec ce code précis, il y aurait un ralentissement, mais si tu ajoutes un traitement lourd, là ca deviendra utile et 2 optimisations sont à a disposition: les calculs GPGPU avec CUDA/OpenCL ou alors l'utilisation d'instructions SIMD (3DNow!/MMX/SSE/AVX sur x86/64, NEON sur ARM).
Pour en revenir à la question principale: où coinces-tu? Sais-tu au moins par quoi commencer?
0
samehb Messages postés 14 Date d'inscription vendredi 13 décembre 2013 Statut Membre Dernière intervention 23 janvier 2014
15 déc. 2013 à 21:17
-le sujet de CUDA C est le choix de mon encadreur de projet .Je n'ai pas étudier
?CUDA C .
-J'ai besoin d'une traduction complète du programme.
- mon spécialité dans son et l'image J'ai donc choisi ce programme comme un exemple
- but de mon application est montrer la difference entre CPU et GPU a partir C et CUDA C
0