its working now

This commit is contained in:
Osman Faruk Bayram 2025-08-27 01:18:05 +03:00
parent 347d5c6554
commit eacee11566
2 changed files with 44 additions and 27 deletions

View file

@ -29,23 +29,40 @@
packages."${system}" = { packages."${system}" = {
# just one main.cu file for now # just one main.cu file for now
# compile it and place it to $out/bin/cuda-kernel # compile it and place it to $out/bin/cuda-kernel
cuda-kernel = pkgs.cudaPackages.backendStdenv.mkDerivation { cuda-kernel = let
name = "cuda-kernel"; # Use CUDA 12.0 which should be compatible with driver 580.76.05
src = ./.; cudaPackages = pkgs.cudaPackages;
buildInputs = with pkgs; [ cudatoolkit = cudaPackages.cudatoolkit;
cudatoolkit in
cudaPackages.cuda_cudart cudaPackages.backendStdenv.mkDerivation {
linuxPackages.nvidia_x11_beta name = "cuda";
]; src = ./main.cu;
cudaSupport = true; unpackPhase = "true";
requiredSystemFeatures = [ "cuda" ]; buildInputs = [
LD_LIBRARY_PATH = "${pkgs.linuxPackages.nvidia_x11_beta}/lib"; cudatoolkit
buildPhase = '' cudaPackages.cuda_cudart
nvcc -o main main.cu ];
mkdir -p $out/bin nativeBuildInputs = [
mv main $out/bin/cuda-kernel cudatoolkit
''; pkgs.autoAddDriverRunpath
}; ];
LD_LIBRARY_PATH = "${cudatoolkit}/lib:${cudaPackages.cuda_cudart}/lib";
buildPhase = ''
echo "GCC Version:"
gcc --version
echo "NVCC Version:"
nvcc --version
echo "Building CUDA program..."
nvcc -arch=sm_89 -o main $src
mkdir -p $out/bin
cp main $out/bin/
'';
meta = {
mainProgram = "main";
platforms = ["x86_64-linux"];
};
};
default = self.packages."${system}".cuda-kernel; default = self.packages."${system}".cuda-kernel;
}; };
}; };

20
main.cu
View file

@ -1,13 +1,13 @@
#include <unistd.h>
#include <iostream> #include <iostream>
#include "cuda.h"
int main() {
int main(){ size_t free_t, total_t;
cudaError_t err;
size_t mf, ma; err = cudaMemGetInfo(&free_t, &total_t);
cudaMemGetInfo(&mf, &ma); if (err != cudaSuccess) { printf("cudaMalloc d_steps_arr error: %s\n", cudaGetErrorString(err)); return 1; }
std::cout << "Free memory (mb): " << mf/1024/1024 << std::endl; std::cout << "Free mem: " << free_t / (1024 * 1024) << " MB Total mem: " << total_t / (1024 * 1024) << " MB" << std::endl;
std::cout << "Total memory (mb): " << ma/1024/1024 << std::endl; std::cout << "Free mem: " << free_t / (1024 * 1024 * 1024) << " GB Total mem: " << total_t / (1024 * 1024 * 1024) << " GB" << std::endl;
return 0;
return 0;
} }