SGEMM repos (upstream_ref/sgemm_cuda/, 41 files): siboehm/SGEMM_CUDA: kernel 1-12, runner, CMake, cuBLAS benchmark wangzyon/NVIDIA_SGEMM_PRACTICE: kernel 1-7 (Chinese comments), utils edtallison/sgemm-cuda: kernel 01-09 (learning notes), Makefile xllm kernels (ex_engine/xllm_kernels/cuda/): fused_qknorm_rope.cu + bind — saves 128 kernel launches/fwd xattention/ — 6 files from upstream xllm headers: corex_compat_utils.h, topk_last_dim.cuh ilu/CMakeLists.txt SO_BUILD_MANIFEST.md — complete .so inventory and call chain analysis
19 lines
580 B
Plaintext
19 lines
580 B
Plaintext
#pragma once
|
||
|
||
#include <cuda_runtime.h>
|
||
#include <cublas_v2.h>
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
|
||
__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];
|
||
} |