Sign inSign up

rahimdruba/mdh-cuda-generator

By rahimdruba

Updated 3 months ago

CUDA kernel generator for Matrix Multiplication using MDH framework.

Image
Languages & frameworks
Machine learning & AI
Developer tools
0

141

rahimdruba/mdh-cuda-generator repository overview

Requirements

  • Docker installed
  • NVIDIA GPU
  • NVIDIA drivers installed
  • NVIDIA Container Toolkit installed

How to run

Pull the image:

docker pull rahimdruba/mdh-cuda-generator

Run the container:

docker run --gpus all -it rahimdruba/mdh-cuda-generator


Inside the container

Step 1 - Generate the CUDA kernels:

matmul

This creates matmul_1.cu and matmul_2.cu inside /CUDAAA.

Step 2 - Compile kernel 1:

nvcc -c matmul_1.cu -o matmul_1.o
-DTYPE_T=float -DTYPE_TS=float
-DCACHE_L_CB=0 -DCACHE_P_CB=0
-DG_CB_RES_DEST_LEVEL=2 -DL_CB_RES_DEST_LEVEL=1 -DP_CB_RES_DEST_LEVEL=0
-DG_CB_SIZE_L_1=10 -DG_CB_SIZE_L_2=500 -DG_CB_SIZE_R_1=64
-DL_CB_SIZE_L_1=8 -DL_CB_SIZE_L_2=16 -DL_CB_SIZE_R_1=64
-DP_CB_SIZE_L_1=1 -DP_CB_SIZE_L_2=1 -DP_CB_SIZE_R_1=1
-DNUM_WG_L_1=2 -DNUM_WG_L_2=32 -DNUM_WG_R_1=1
-DNUM_WI_L_1=4 -DNUM_WI_L_2=32 -DNUM_WI_R_1=8
-DOCL_DIM_L_1=2 -DOCL_DIM_L_2=1 -DOCL_DIM_R_1=0

Step 3 - Compile kernel 2:

nvcc -c matmul_2.cu -o matmul_2.o
-DTYPE_T=float -DTYPE_TS=float
-DCACHE_L_CB=0 -DCACHE_P_CB=0
-DG_CB_RES_DEST_LEVEL=2 -DL_CB_RES_DEST_LEVEL=1 -DP_CB_RES_DEST_LEVEL=0
-DG_CB_SIZE_L_1=10 -DG_CB_SIZE_L_2=500 -DG_CB_SIZE_R_1=64
-DL_CB_SIZE_L_1=8 -DL_CB_SIZE_L_2=16 -DL_CB_SIZE_R_1=64
-DP_CB_SIZE_L_1=1 -DP_CB_SIZE_L_2=1 -DP_CB_SIZE_R_1=1
-DNUM_WG_L_1=2 -DNUM_WG_L_2=32 -DNUM_WG_R_1=1
-DNUM_WI_L_1=4 -DNUM_WI_L_2=32 -DNUM_WI_R_1=8
-DOCL_DIM_L_1=2 -DOCL_DIM_L_2=1 -DOCL_DIM_R_1=0

Step 4 - Run the correctness and timing test:

cp /opt/test_matmul.cu . nvcc test_matmul.cu matmul_1.cu matmul_2.cu -o test_matmul
-DTYPE_T=float -DTYPE_TS=float
-DCACHE_L_CB=0 -DCACHE_P_CB=0
-DG_CB_RES_DEST_LEVEL=2 -DL_CB_RES_DEST_LEVEL=1 -DP_CB_RES_DEST_LEVEL=0
-DG_CB_SIZE_L_1=10 -DG_CB_SIZE_L_2=500 -DG_CB_SIZE_R_1=64
-DL_CB_SIZE_L_1=8 -DL_CB_SIZE_L_2=16 -DL_CB_SIZE_R_1=64
-DP_CB_SIZE_L_1=1 -DP_CB_SIZE_L_2=1 -DP_CB_SIZE_R_1=1
-DNUM_WG_L_1=2 -DNUM_WG_L_2=32 -DNUM_WG_R_1=1
-DNUM_WI_L_1=4 -DNUM_WI_L_2=32 -DNUM_WI_R_1=8
-DOCL_DIM_L_1=2 -DOCL_DIM_L_2=1 -DOCL_DIM_R_1=0 ./test_matmul


Expected output

Matrix Multiplication (MDH) is SUCCESSFUL! GPU time measurement (MDH): 0.085312 ms


To repeat from scratch

Exit and re-run the container - /CUDAAA starts clean every time:

docker run --gpus all -it rahimdruba/mdh-cuda-generator


Tag summary

Content type

Image

Digest

sha256:269cf49c3

Size

2.9 GB

Last updated

3 months ago

docker pull rahimdruba/mdh-cuda-generator