MCPcopy Create free account
hub / github.com/AdvancedCompiler/AdvancedCompiler / Mul_Matrixdcu

Function Mul_Matrixdcu

code/Chapter12/12-5-hip-matrix.cpp:22–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20 }
21}
22void Mul_Matrixdcu(float *A, float *B, float *C, int m1, int n1, int n2)
23{
24 float *d_A, *d_B, *d_C;
25 size_t sizeA = n1 * m1 * sizeof(float);
26 size_t sizeB = n2 * m1 * sizeof(float);
27 size_t sizeC = n1 * n2 * sizeof(float);
28 //在设备端(dcu)申请地址空间,以存储数据
29 hipMalloc(&d_A, sizeA);
30 hipMalloc(&d_B, sizeB);
31 hipMalloc(&d_C, sizeC);
32 //将主机端数据传输到dcu以做计算
33 hipMemcpy(d_A, A, sizeA, hipMemcpyHostToDevice);
34 hipMemcpy(d_B, B, sizeB, hipMemcpyHostToDevice);
35 //这里将C也传进去,因为可能有一部分计算值已经在C中了
36 hipMemcpy(d_C, C, sizeC, hipMemcpyHostToDevice);
37 dim3 dimBlock(BLOCK_SIZE,BLOCK_SIZE);
38 dim3 dimGrid((n2-1)/BLOCK_SIZE + 1, (m1-1)/BLOCK_SIZE + 1);
39 //调用核函数
40 hipLaunchKernelGGL(MatMulKernel,dimGrid,dimBlock,0,0,d_A,d_B,d_C, m1, n1, n2);
41 //将dcu计算的数据传回主机端
42 hipMemcpy(C, d_C, sizeC, hipMemcpyDeviceToHost);
43 hipFree(d_A);
44 hipFree(d_B);
45 hipFree(d_C);
46}
47int main(int argc,char **argv){
48 float *A,*B,*C;
49 double start_time,end_time;

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected