Advertisement
Thiff

Sachovnice_main3

Nov 20th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. Sachovnice
  2. - potreba pridat hlavicky #include ...
  3. - prejmenovat volanou funkci
  4. - gl ;)
  5.  
  6. main3.cpp
  7. // prototyp
  8. void run_vzor( uchar4 *bgr_pic, int sizex, int sizey, int elem );
  9. // substituce
  10. #define RECT 20            // rozmer nejmensiho ctverce obrazku
  11. #define SIZEX ( RECT * 8 )              // rozmer obrazku X
  12. #define SIZEY ( RECT * 8 )      // rozmer obrazku Y
  13. ...zbytek je stejny jako v main3.cpp
  14.  
  15.  
  16. cuda3.cu
  17. // Kernel (synonymum vlakna)
  18. __global__ void kernel_vzor( uchar4 *pic, int sizex, int sizey, int elem )
  19. {
  20. // souradnice vlakna
  21.    int y = blockDim.y * blockIdx.y + threadIdx.y;
  22.    int x = blockDim.x * blockIdx.x + threadIdx.x;
  23.    
  24.    uchar4 bgr = { 0, 0, 0 }; // cerna
  25.  
  26.    // kratka cesta ifu :)
  27.    // sude radky
  28.    if ( blockIdx.x % 2 == 0 && blockIdx.y % 2 == 0 )
  29.       bgr.x = bgr.y = bgr.z = 255;
  30.    
  31.    // liche radky
  32.    if ( blockIdx.x % 2 != 0 && blockIdx.y % 2 != 0 )
  33.       bgr.x = bgr.y = bgr.z = 255;
  34.    
  35.    // ulozeni bodu do obrazku
  36.    // poradove cislo prvku je sirka_obrazku * radek + sloupec
  37.    pic[ y * sizex + x ] = bgr;
  38. }
  39.  
  40. // Funkce, ve ktere se vytvareji vlakna se zvolenym Kernelem
  41. void run_vzor( uchar4 *pic, int sizex, int sizey, int elem )
  42. {
  43.    // alokace pameti ve videokarte
  44.    uchar4 *cudaPic;
  45.    cudaMalloc( &cudaPic, sizex * sizey * sizeof( uchar4 ) );
  46.  
  47.    // vytvoreni bloku s vlakny
  48.    kernel_vzor<<< dim3( sizex/elem, sizey/elem ), dim3( elem, elem ) >>>( cudaPic, sizex, sizey, elem );
  49.  
  50.    // prenos dat z videokarty
  51.    cudaMemcpy( pic, cudaPic, sizex * sizey * sizeof( uchar4 ), cudaMemcpyDeviceToHost );
  52.    // uvolneni alokovane pameti ve videokarte
  53.    cudaFree( cudaPic );
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement