its working now
This commit is contained in:
parent
347d5c6554
commit
eacee11566
2 changed files with 44 additions and 27 deletions
37
flake.nix
37
flake.nix
|
|
@ -29,22 +29,39 @@
|
|||
packages."${system}" = {
|
||||
# just one main.cu file for now
|
||||
# compile it and place it to $out/bin/cuda-kernel
|
||||
cuda-kernel = pkgs.cudaPackages.backendStdenv.mkDerivation {
|
||||
name = "cuda-kernel";
|
||||
src = ./.;
|
||||
buildInputs = with pkgs; [
|
||||
cuda-kernel = let
|
||||
# Use CUDA 12.0 which should be compatible with driver 580.76.05
|
||||
cudaPackages = pkgs.cudaPackages;
|
||||
cudatoolkit = cudaPackages.cudatoolkit;
|
||||
in
|
||||
cudaPackages.backendStdenv.mkDerivation {
|
||||
name = "cuda";
|
||||
src = ./main.cu;
|
||||
unpackPhase = "true";
|
||||
buildInputs = [
|
||||
cudatoolkit
|
||||
cudaPackages.cuda_cudart
|
||||
linuxPackages.nvidia_x11_beta
|
||||
];
|
||||
cudaSupport = true;
|
||||
requiredSystemFeatures = [ "cuda" ];
|
||||
LD_LIBRARY_PATH = "${pkgs.linuxPackages.nvidia_x11_beta}/lib";
|
||||
nativeBuildInputs = [
|
||||
cudatoolkit
|
||||
pkgs.autoAddDriverRunpath
|
||||
];
|
||||
LD_LIBRARY_PATH = "${cudatoolkit}/lib:${cudaPackages.cuda_cudart}/lib";
|
||||
buildPhase = ''
|
||||
nvcc -o main main.cu
|
||||
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
|
||||
mv main $out/bin/cuda-kernel
|
||||
cp main $out/bin/
|
||||
'';
|
||||
meta = {
|
||||
mainProgram = "main";
|
||||
platforms = ["x86_64-linux"];
|
||||
};
|
||||
};
|
||||
default = self.packages."${system}".cuda-kernel;
|
||||
};
|
||||
|
|
|
|||
18
main.cu
18
main.cu
|
|
@ -1,13 +1,13 @@
|
|||
#include <unistd.h>
|
||||
#include <iostream>
|
||||
#include "cuda.h"
|
||||
|
||||
|
||||
int main(){
|
||||
|
||||
size_t mf, ma;
|
||||
cudaMemGetInfo(&mf, &ma);
|
||||
std::cout << "Free memory (mb): " << mf/1024/1024 << std::endl;
|
||||
std::cout << "Total memory (mb): " << ma/1024/1024 << std::endl;
|
||||
|
||||
int main() {
|
||||
size_t free_t, total_t;
|
||||
cudaError_t err;
|
||||
err = cudaMemGetInfo(&free_t, &total_t);
|
||||
if (err != cudaSuccess) { printf("cudaMalloc d_steps_arr error: %s\n", cudaGetErrorString(err)); return 1; }
|
||||
std::cout << "Free mem: " << free_t / (1024 * 1024) << " MB Total mem: " << total_t / (1024 * 1024) << " MB" << std::endl;
|
||||
std::cout << "Free mem: " << free_t / (1024 * 1024 * 1024) << " GB Total mem: " << total_t / (1024 * 1024 * 1024) << " GB" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue