Advertisement
Guest User

Untitled

a guest
Jan 18th, 2014
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1. #include "cuda_runtime.h"
  2. #include "device_launch_parameters.h"
  3. #include <stdio.h>
  4.  
  5. __global__ void fizzbuzzKernel(char*, char*)
  6.  
  7. void main()
  8. {
  9.     // Allokerer fizz og buzz på CPU
  10.     char *fizz = "fizz\0";
  11.     char *buzz = "buzz\0";
  12.  
  13.     // Device-pointere for fizz og buzz
  14.     char *dev_fizz = 0;
  15.     char *dev_buzz = 0;
  16.  
  17.     // Allokerer plass til fizz og buzz på GPU
  18.     cudaMalloc((void**)&dev_fizz, 5 * sizeof(char));
  19.     cudaMalloc((void**)&dev_buzz, 5 * sizeof(char));
  20.  
  21.     // Kopierer fizz og buzz fra CPU til GPU
  22.     cudaMemcpy(dev_fizz, fizz, 5 * sizeof(char), cudaMemcpyHostToDevice);
  23.     cudaMemcpy(dev_buzz, buzz, 5 * sizeof(char), cudaMemcpyHostToDevice);
  24.  
  25.     // Kjører kernel med 10 blokker, som hver har 10 threads
  26.     fizzbuzzKernel<<<10, 10>>>(dev_fizz, dev_buzz);
  27.  
  28.     // Synkronisering
  29.     cudaDeviceSynchronize();
  30.  
  31.     // ???
  32.     // Profit!
  33. }
  34.  
  35. __global__ void fizzbuzzKernel(char *fizz, char *buzz)
  36. {
  37.     int number = threadIdx.x * blockDim.x + blockIdx.x + 1;
  38.     if(number % 3 == 0 && number % 5 == 0)
  39.     {
  40.         printf("%i:\t%s%s\n", number, fizz, buzz);
  41.     }
  42.     else if(number % 3 == 0)
  43.     {
  44.         printf("%i:\t%s\n", number, fizz);
  45.     }
  46.     else if(number % 5 == 0)
  47.     {
  48.         printf("%i:\t%s\n", number, buzz);
  49.     }
  50.     else
  51.     {
  52.         printf("%i:\t%i\n", number, number);
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement