diff --git a/Makefile b/Makefile index 63758304..9eee0afe 100644 --- a/Makefile +++ b/Makefile @@ -12,8 +12,26 @@ LIBS+=-L$(LIBDIR) CXX=g++ CXXFLAGS=-O2 -std=c++11 +# Detects the compute capability of the first GPU +COMPUTE_CAP := $(shell ./compute_cap.sh) + +# Checks if the COMPUTE_CAP variable is empty, and if so, produces a fatal error +ifeq ($(COMPUTE_CAP),) +$(error Could not detect a GPU. Please ensure a GPU is available and that nvidia-smi is installed.) +endif + +# Displays the detected compute capability +$(info Detected Compute Capability: $(COMPUTE_CAP)) + +# Checks if the COMPUTE_CAP variable is empty, and if so, produces a fatal error +ifeq ($(COMPUTE_CAP),) +$(error Could not detect a GPU. Please ensure a GPU is available and that nvidia-smi is installed.) +endif + +# Displays the detected compute capability +$(info Detected Compute Capability: $(COMPUTE_CAP)) + # CUDA variables -COMPUTE_CAP=30 NVCC=nvcc NVCCFLAGS=-std=c++11 -gencode=arch=compute_${COMPUTE_CAP},code=\"sm_${COMPUTE_CAP}\" -Xptxas="-v" -Xcompiler "${CXXFLAGS}" CUDA_HOME=/usr/local/cuda diff --git a/compute_cap.sh b/compute_cap.sh new file mode 100755 index 00000000..0f80b907 --- /dev/null +++ b/compute_cap.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Obtém o nome da GPU usando o nvidia-smi +GPU_NAME=$(nvidia-smi --query-gpu=name --format=csv,noheader,nounits | head -n 1) + +# Mapeamento das GPUs para suas Compute Capabilities +case "$GPU_NAME" in + *"RTX 4090"*) echo "89" ;; # NVIDIA GeForce RTX 4090 + *"RTX 4080"*) echo "89" ;; # NVIDIA GeForce RTX 4080 + *"RTX 4070"*) echo "89" ;; # NVIDIA GeForce RTX 4070 + *"RTX 4060"*) echo "89" ;; # NVIDIA GeForce RTX 4060 + *"RTX 3090"*) echo "86" ;; # NVIDIA GeForce RTX 3090 + *"RTX 3080"*) echo "86" ;; # NVIDIA GeForce RTX 3080 + *"RTX 3070"*) echo "86" ;; # NVIDIA GeForce RTX 3070 + *"RTX 3060"*) echo "86" ;; # NVIDIA GeForce RTX 3060 + *"A100"*) echo "80" ;; # NVIDIA A100 + *"V100"*) echo "70" ;; # NVIDIA V100 + *"T4"*) echo "75" ;; # NVIDIA T4 + *"P100"*) echo "60" ;; # NVIDIA P100 + *"A30"*) echo "80" ;; # NVIDIA A30 + *"A40"*) echo "86" ;; # NVIDIA A40 + *"A10"*) echo "86" ;; # NVIDIA A10 + *"Titan V"*) echo "70" ;; # NVIDIA Titan V + *"Titan RTX"*) echo "75" ;; # NVIDIA Titan RTX + *"GTX 1080"*) echo "61" ;; # NVIDIA GTX 1080 + *"GTX 1070"*) echo "61" ;; # NVIDIA GTX 1070 + *"GTX 1060"*) echo "61" ;; # NVIDIA GTX 1060 + *"GTX 1050"*) echo "61" ;; # NVIDIA GTX 1050 + *"GTX 1660"*) echo "75" ;; # NVIDIA GTX 1660 + *"Quadro RTX 8000"*) echo "75" ;; # NVIDIA Quadro RTX 8000 + *"Quadro RTX 6000"*) echo "75" ;; # NVIDIA Quadro RTX 6000 + *"Quadro T2000"*) echo "75" ;; # NVIDIA Quadro T2000 + *"Quadro P4000"*) echo "61" ;; # NVIDIA Quadro P4000 + *"Quadro K6000"*) echo "35" ;; # NVIDIA Quadro K6000 + *"Tesla K80"*) echo "37" ;; # NVIDIA Tesla K80 + *"Tesla P4"*) echo "61" ;; # NVIDIA Tesla P4 + *"Tesla P100"*) echo "60" ;; # NVIDIA Tesla P100 + *"Tesla T4"*) echo "75" ;; # NVIDIA Tesla T4 + *"Tesla V100"*) echo "70" ;; # NVIDIA Tesla V100 + *) + echo "Unknown compute capability for GPU: $GPU_NAME" + exit 1 ;; +esac diff --git a/cpu b/cpu new file mode 100755 index 00000000..48f5ce5e Binary files /dev/null and b/cpu differ diff --git a/gpu b/gpu new file mode 100755 index 00000000..8c5ea6e7 Binary files /dev/null and b/gpu differ diff --git a/gsbs b/gsbs new file mode 100755 index 00000000..7c1aa0a4 Binary files /dev/null and b/gsbs differ