Programmation CUDA C

Bonjour,
J'ai besoin pour m'aider dans mon travail (programmation CUDA C)
svp

1 réponse

  1. Contributeur
    Salut, "J'ai besoin pour", pardon, mais tu as besoin de quoi?
    Au passage, ce travail, c'est un exo à rendre?
    1. 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. }
    2. Contributeur
      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?
    3. programmation parallèle avec CUDA C est un sujet de mon mémoire de mastère
    4. Contributeur
      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?
    5. -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