diff --git a/modules/nixos/guests/defenseioGpu/config/default.nix b/modules/nixos/guests/defenseioGpu/config/default.nix index 1d358d7..57c759a 100644 --- a/modules/nixos/guests/defenseioGpu/config/default.nix +++ b/modules/nixos/guests/defenseioGpu/config/default.nix @@ -220,65 +220,79 @@ in # Main execution script ExecStart = pkgs.writeShellScript "run-gpu-miner" '' - set -e - cd ${cfg.dataDir}/GPU-Miner + set -e + cd ${cfg.dataDir}/GPU-Miner - # Set CUDA environment - export CUDA_PATH=${cudaPackages.cudatoolkit} - export CUDA_ROOT=${cudaPackages.cudatoolkit} - export CUDA_HOME=${cudaPackages.cudatoolkit} + # Set CUDA environment + export CUDA_PATH=${cudaPackages.cudatoolkit} + export CUDA_ROOT=${cudaPackages.cudatoolkit} + export CUDA_HOME=${cudaPackages.cudatoolkit} - # Use GCC 13 for CUDA compilation (compatible with CUDA 12.8) - export CC=${gccCompiler}/bin/gcc - export CXX=${gccCompiler}/bin/g++ + # Use GCC 13 for CUDA compilation (compatible with CUDA 12.8) + export CC=${gccCompiler}/bin/gcc + export CXX=${gccCompiler}/bin/g++ + + # CRITICAL: Force nvcc to use GCC 13 by creating a wrapper script + # The wrapper must pass both --compiler-bindir and ensure CUDA headers are found + mkdir -p /tmp/nvcc-wrapper + cat > /tmp/nvcc-wrapper/nvcc < /dev/null; then + nvidia-smi -L || echo "Warning: Could not list GPUs" + fi - # Verify GPU accessibility - echo "Checking GPU availability..." - if command -v nvidia-smi &> /dev/null; then - nvidia-smi -L || echo "Warning: Could not list GPUs" - fi + echo "Starting GPU miner..." + echo "Python version: $(venv/bin/python --version)" + echo "Compile-time GCC: ${gccCompiler}/bin/gcc ($(${gccCompiler}/bin/gcc --version | head -n1))" + echo "Runtime GCC library: ${gccRuntime.cc.lib}/lib" + echo "Working directory: $(pwd)" + echo "NVCC wrapper: $(type -p nvcc)" - echo "Starting GPU miner..." - echo "Python version: $(venv/bin/python --version)" - echo "Compile-time GCC: ${gccCompiler}/bin/gcc ($(${gccCompiler}/bin/gcc --version | head -n1))" - echo "Runtime GCC library: ${gccRuntime.cc.lib}/lib" - echo "Working directory: $(pwd)" + # Verify the critical library is available + echo "Checking for CXXABI_1.3.15..." + if strings ${gccRuntime.cc.lib}/lib/libstdc++.so.6 | grep -q CXXABI_1.3.15; then + echo "✓ CXXABI_1.3.15 found in runtime libstdc++" + else + echo "✗ WARNING: CXXABI_1.3.15 not found" + fi - # Verify the critical library is available - echo "Checking for CXXABI_1.3.15..." - if strings ${gccRuntime.cc.lib}/lib/libstdc++.so.6 | grep -q CXXABI_1.3.15; then - echo "✓ CXXABI_1.3.15 found in runtime libstdc++" - else - echo "✗ WARNING: CXXABI_1.3.15 not found" - fi + # Test nvcc compilation + echo "Testing nvcc compiler configuration..." + /tmp/nvcc-wrapper/nvcc --version - # Run the miner - exec venv/bin/python main.py --workers ${builtins.toString cfg.maxWorkers} 2>&1 + # Run the miner + exec venv/bin/python main.py --workers ${builtins.toString cfg.maxWorkers} 2>&1 ''; - StandardOutput = "journal"; StandardError = "journal"; };