Compare commits
5 commits
874a63434c
...
d9c4552d8d
| Author | SHA1 | Date | |
|---|---|---|---|
| d9c4552d8d | |||
| eacee11566 | |||
| 347d5c6554 | |||
| 4bab842687 | |||
| 2fad5418cc |
4 changed files with 55 additions and 28 deletions
8
README.md
Normal file
8
README.md
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
Example cuda code compilation in nix.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ nix run github:osbm/cuda-kernel-nix
|
||||||
|
Free mem: 22112 MB Total mem: 24078 MB
|
||||||
|
Free mem: 21 GB Total mem: 23 GB
|
||||||
|
```
|
||||||
6
flake.lock
generated
6
flake.lock
generated
|
|
@ -2,11 +2,11 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1734988233,
|
"lastModified": 1756159630,
|
||||||
"narHash": "sha256-Ucfnxq1rF/GjNP3kTL+uTfgdoE9a3fxDftSfeLIS8mA=",
|
"narHash": "sha256-ohMvsjtSVdT/bruXf5ClBh8ZYXRmD4krmjKrXhEvwMg=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "de1864217bfa9b5845f465e771e0ecb48b30e02d",
|
"rev": "84c256e42600cb0fdf25763b48d28df2f25a0c8b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
35
flake.nix
35
flake.nix
|
|
@ -29,20 +29,39 @@
|
||||||
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.stdenv.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;
|
||||||
|
in
|
||||||
|
cudaPackages.backendStdenv.mkDerivation {
|
||||||
|
name = "cuda";
|
||||||
|
src = ./main.cu;
|
||||||
|
unpackPhase = "true";
|
||||||
|
buildInputs = [
|
||||||
cudatoolkit
|
cudatoolkit
|
||||||
cudaPackages.cuda_cudart
|
cudaPackages.cuda_cudart
|
||||||
linuxPackages.nvidia_x11
|
|
||||||
];
|
];
|
||||||
LD_LIBRARY_PATH = "${pkgs.linuxPackages.nvidia_x11}/lib";
|
nativeBuildInputs = [
|
||||||
|
cudatoolkit
|
||||||
|
pkgs.autoAddDriverRunpath
|
||||||
|
];
|
||||||
|
LD_LIBRARY_PATH = "${cudatoolkit}/lib:${cudaPackages.cuda_cudart}/lib";
|
||||||
buildPhase = ''
|
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
|
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;
|
default = self.packages."${system}".cuda-kernel;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
16
main.cu
16
main.cu
|
|
@ -1,13 +1,13 @@
|
||||||
#include <unistd.h>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include "cuda.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
size_t free_t, total_t;
|
||||||
size_t mf, ma;
|
cudaError_t err;
|
||||||
cudaMemGetInfo(&mf, &ma);
|
err = cudaMemGetInfo(&free_t, &total_t);
|
||||||
std::cout << "Free memory (mb): " << mf/1024/1024 << std::endl;
|
if (err != cudaSuccess) { printf("cudaMalloc d_steps_arr error: %s\n", cudaGetErrorString(err)); return 1; }
|
||||||
std::cout << "Total memory (mb): " << ma/1024/1024 << std::endl;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue