README.md

August 25, 2023 ยท View on GitHub

Introduction

This repository showcases various features of GEMM aimed at enhancing its performance.

C = alpha * A * B + beta * C

Matrix Multiplication Algorithm Implementations

Installation

  • Edit build.sh file
    • cmake -DCUDA_ARCH=/your/cuda/arch -DCUDA_TOOLKIT_ROOT_DIR=/local/cuda/path
  • bash build.sh
image

Performance

Run on RTX 4070 Ti | Theoretical Performance: FP32 (float) 40.09 TFLOPS

BenchmarkTimeCPUIterationsUserCounters
Naive/Gemm_float/5120/4096/40961731 ms1731 ms1TFlops=0.099244/s, operation=171.799G
Blocker/Gemm_float/5120/4096/4096103 ms103 ms6TFlops=1.66191/s, operation=1030.79G
Strider/Gemm_float/5120/4096/409619.9 ms19.9 ms30TFlops=8.62941/s, operation=5.15396T
Aligner/Gemm_float/5120/4096/409617.3 ms17.3 ms33TFlops=9.93519/s, operation=5.66936T
MultiLoader/Gemm_float/5120/4096/409619.8 ms19.8 ms31TFlops=8.67294/s, operation=5.32576T
BcAvoider/Gemm_float/5120/4096/409624.2 ms24.2 ms26TFlops=7.10627/s, operation=4.46677T
PpBuffer/Gemm_float/5120/4096/409620.9 ms20.9 ms28TFlops=8.2018/s, operation=4.81036T
Dense/Gemm_float/5120/4096/409611.0 ms11.0 ms61TFlops=15.5654/s, operation=10.4797T
Cublas/Gemm_float/5120/4096/40965.95 ms5.95 ms115TFlops=28.8656/s, operation=19.7568T
Yzaiustc/Gemm_float/5120/4096/40967.23 ms7.23 ms93TFlops=23.765/s, operation=15.9773T
Yhs/Gemm_float/5120/4096/40966.78 ms6.78 ms100TFlops=25.3418/s, operation=17.1799T

Todo

  • Address the bug causing a segment fault in MatrixMulCUDA7.
  • Fix the issue where CUDA implementations 0 to 6 cannot handle cases where m = 8 n = 4096 k = 4096.