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

Function Mul_Matrixdcu

code/Chapter12/12-6-mpi-hip-cannon.cpp:21–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected