Advertisement
Guest User

Untitled

a guest
Nov 21st, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. #include "cuda_runtime.h"
  2. #include "device_launch_parameters.h"
  3.  
  4. #include <stdio.h>
  5.  
  6. const int N = 4;
  7.  
  8. __global__ void scalar(int *a, int *b, int *res){
  9.  
  10.  
  11. int tidx = threadIdx.x+blockIdx.x*blockDim.x;//ind1
  12. int tidy = threadIdx.y+blockIdx.y*blockDim.y;
  13. int ind1 = tidx;
  14. int ind = tidy*N;
  15. int ind2 = tidx+tidy*blockDim.x*gridDim.x;
  16.  
  17.  
  18.  
  19. int s =0;
  20. for (int k=0;k<N;k++)
  21. s+=a[ind+k]*b[ind1+k*N];
  22. res[ind2]=s;
  23. }
  24.  
  25.  
  26.  
  27. int main()
  28. {
  29.  
  30. dim3 Nth(2,2);
  31. dim3 Nbl(N/Nth.x, N/Nth.x);
  32. int *dev_a, *dev_b, *dev_res;
  33. int a[N*N], b[N*N], res[N*N], res2[N*N];
  34.  
  35.  
  36.  
  37. for (long i = 0; i < N*N; i++)
  38. {
  39. a[i] = i;
  40. b[i] = i+1;
  41. }
  42.  
  43.  
  44. cudaMalloc((void**)&dev_a, sizeof(int)*N*N);
  45. cudaMalloc((void**)&dev_b, sizeof(int)*N*N);
  46. cudaMalloc((void**)&dev_res, sizeof(int)*N*N);
  47.  
  48. cudaMemcpy(dev_a, a, sizeof(int)*N*N, cudaMemcpyHostToDevice);
  49. cudaMemcpy(dev_b, b, sizeof(int)*N*N, cudaMemcpyHostToDevice);
  50.  
  51. scalar<<<Nbl, Nth >>>(dev_a, dev_b, dev_res);
  52. cudaMemcpy(res, dev_res, sizeof(int)*N*N, cudaMemcpyDeviceToHost);
  53.  
  54. for (int i =0;i<N;i++)
  55. {
  56. for (int j = 0;j<N;j++)
  57. printf("%d ",res[i*N+j]);
  58. printf("\n");
  59. }
  60.  
  61.  
  62. for (int k = 0; k<N;k++)
  63. {
  64. for (int i = 0; i<N;i++)
  65. {
  66. int s = 0;
  67. for (int j = 0; j<N;j++)
  68. {
  69. s+=a[k*N+j]*b[j*N+i];
  70. }
  71. res2[k*N+i]=s;
  72. }
  73.  
  74. }
  75.  
  76. for (int i =0;i<N;i++)
  77. {
  78. for (int j = 0;j<N;j++)
  79. printf("%d ",res2[i*N+j]);
  80. printf("\n");
  81. }
  82.  
  83. getchar();
  84. return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement