Programmation CUDA C

samehb Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
samehb Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai besoin pour m'aider dans mon travail (programmation CUDA C)
svp

1 réponse

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    Salut, "J'ai besoin pour", pardon, mais tu as besoin de quoi?
    Au passage, ce travail, c'est un exo à rendre?
    0
    1. samehb Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    2. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      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
    3. samehb Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      programmation parallèle avec CUDA C est un sujet de mon mémoire de mastère
      0
    4. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      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
    5. samehb Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      -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