#pragma once #include #include #include #include __global__ __launch_bounds__(1024) void mysgemm_v1(int M, int N, int K, float alpha, float *A, float *B, float beta, float *C) { int gx = blockIdx.x * blockDim.x + threadIdx.x; // 全局x int gy = blockIdx.y * blockDim.y + threadIdx.y; // 全局y float tmp = 0.; for (int i = 0; i < K; i++) { tmp += A[gy * K + i] * B[i * N + gx]; // 两次全局内存访问和一次FMA(累加乘) } C[gy * N + gx] = alpha * tmp + beta * C[gy * N + gx]; }