Advertisement
Aaaaa988

Шпора на ПГП_матрицы

Jun 16th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1.     int N = 2500;
  2.     int N2= N*N;
  3.     float a = 2.f;
  4.     float b = 1.f;
  5.  
  6.     float* gpuMatrxA, * matrxA, * matrxB, * gpuMatrxB, *matrxC, *gpuMatrxC;
  7.     cudaEventCreate(&start);
  8.     cudaEventCreate(&stop);
  9.     //выделение закрепленной (pinned) памяти, особый участок памяти на ОЗУ
  10.     cudaMallocHost((void**)&matrxA, N2 * sizeof(float));
  11.     cudaMallocHost((void**)&matrxB, N2 * sizeof(float));
  12.     cudaMallocHost((void**)&matrxC, N2 * sizeof(float));
  13.     // выделение на девайсе глобальной памяти
  14.     cudaMalloc((void**)&gpuMatrxA, N2 * sizeof(float));
  15.     cudaMalloc((void**)&gpuMatrxB, N2 * sizeof(float));
  16.     cudaMalloc((void**)&gpuMatrxC, N2 * sizeof(float));
  17.  
  18.     for(int i = 0; i < N2; i++){
  19.         matrxA[i] = (float)i;
  20.         matrxB[i] = 0.55f;
  21.     }
  22.    
  23.     //копирование на девайс//хост то вектор
  24.     cublasSetMatrix(N, N, sizeof(float), (void*)matrixA, N, (void*)gpuMatrxA, N);
  25.     cublasSetMatrix(N, N, sizeof(float), (void*)matrixB, N, (void*)gpuMatrxB, N);
  26.     cublasSetMatrix(N, N, sizeof(float), (void*)matrixC, N, (void*)gpuMatrxC, N);
  27.  
  28.     //дескриптор cublas
  29.     cublasHandle_t cuHandle;
  30.     cublasCreate(&cuHandle);
  31.     //CUBLAS_OP_T - transp matrix;
  32.     cublasSgemm(cuHandle, CUBLAS_OP_N, CUBLAS_OP_N, N, N, N, &a, gpuMatrxA, N, gpuMatrxB, N, &b, gpuMatrxC, N);
  33.    
  34.     //копирование с девайса
  35.     cublasGetMatrix(N, N, sizeof(float), (void*)gpuMatrxA, N, (void*)matrxA, N);
  36.     cublasGetMatrix(N, N, sizeof(float), (void*)gpuMatrxB, N, (void*)matrxB, N);
  37.     cublasGetMatrix(N, N, sizeof(float), (void*)gpuMatrxC, N, (void*)matrxC, N);
  38.    
  39.  
  40.     cout << "Matrix A equal" << endl;
  41.     outputMatrix(matrxA, N);
  42.     cout << endl;
  43.     cout << "Matrix B equal" << endl;
  44.     outputMatrix(matrxB, N);
  45.     cout << endl;
  46.     cout << "Matrix C equal" << endl;
  47.     outputMatrix(matrxC, N);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement