diff --git a/rin/miner/Dockerfile.rocm-complete b/rin/miner/Dockerfile.rocm-complete index f6e268c..c10332a 100644 --- a/rin/miner/Dockerfile.rocm-complete +++ b/rin/miner/Dockerfile.rocm-complete @@ -92,3 +92,4 @@ echo "Available algorithms:"\n\ # Default command CMD ["sh", "-c", "echo 'Build completed successfully! Binaries available in /output/' && ls -la /output/"] + diff --git a/rin/miner/Dockerfile.rocm-lightweight b/rin/miner/Dockerfile.rocm-lightweight index 8aae456..6279b67 100644 --- a/rin/miner/Dockerfile.rocm-lightweight +++ b/rin/miner/Dockerfile.rocm-lightweight @@ -92,3 +92,4 @@ ls -la *.so\n\ # Default command CMD ["sh", "-c", "echo 'ROCm GPU build completed successfully!' && ls -la /output/"] + diff --git a/rin/miner/Dockerfile.rocm-official b/rin/miner/Dockerfile.rocm-official index fd3726f..339160e 100644 --- a/rin/miner/Dockerfile.rocm-official +++ b/rin/miner/Dockerfile.rocm-official @@ -128,3 +128,4 @@ rinhash_cuda(input, input_len, output);\n\ # Default command CMD ["sh", "-c", "echo 'ROCm GPU build completed successfully!' && ls -la /output/ && echo '' && echo 'Integration guide available in INTEGRATION.md'"] + diff --git a/rin/miner/build-complete-system.sh b/rin/miner/build-complete-system.sh index 56e5ced..cc6c58a 100644 --- a/rin/miner/build-complete-system.sh +++ b/rin/miner/build-complete-system.sh @@ -293,3 +293,4 @@ echo " 3. For GPU acceleration, install ROCm runtime and use the libraries" echo "" echo "RinHash ROCm GPU build system completed successfully!" + diff --git a/rin/miner/build-cpuminer-rocm.sh b/rin/miner/build-cpuminer-rocm.sh index b2c0392..5c7bc05 100644 --- a/rin/miner/build-cpuminer-rocm.sh +++ b/rin/miner/build-cpuminer-rocm.sh @@ -200,3 +200,4 @@ else fi echo "cpuminer build completed successfully!" + diff --git a/rin/miner/build-cpuminer-simple.sh b/rin/miner/build-cpuminer-simple.sh index 6ea59cb..06410b0 100644 --- a/rin/miner/build-cpuminer-simple.sh +++ b/rin/miner/build-cpuminer-simple.sh @@ -223,3 +223,4 @@ else fi echo "cpuminer build completed successfully!" + diff --git a/rin/miner/build-rocm-complete.sh b/rin/miner/build-rocm-complete.sh index 19d5581..705f325 100644 --- a/rin/miner/build-rocm-complete.sh +++ b/rin/miner/build-rocm-complete.sh @@ -114,3 +114,4 @@ fi echo "ROCm GPU build completed successfully!" + diff --git a/rin/miner/build-rocm-lightweight.sh b/rin/miner/build-rocm-lightweight.sh index 18b0125..66bac41 100644 --- a/rin/miner/build-rocm-lightweight.sh +++ b/rin/miner/build-rocm-lightweight.sh @@ -111,3 +111,4 @@ fi echo "ROCm GPU build completed successfully!" + diff --git a/rin/miner/build-rocm-official.sh b/rin/miner/build-rocm-official.sh index 1d7a0ba..d12c122 100644 --- a/rin/miner/build-rocm-official.sh +++ b/rin/miner/build-rocm-official.sh @@ -146,3 +146,4 @@ echo "" echo "For more information about ROCm Docker containers, visit:" echo "https://github.com/ROCm/ROCm-docker" + diff --git a/rin/miner/gpu/CMakeLists.txt b/rin/miner/gpu/CMakeLists.txt index 5699618..64b140c 100644 --- a/rin/miner/gpu/CMakeLists.txt +++ b/rin/miner/gpu/CMakeLists.txt @@ -30,3 +30,4 @@ target_compile_options(rinhash-gpu-miner PRIVATE -O3 -march=native) # Install target install(TARGETS rinhash-gpu-miner DESTINATION bin) + diff --git a/rin/miner/gpu/RinHash-hip/argon2d_device.cuh b/rin/miner/gpu/RinHash-hip/argon2d_device.cuh index 206c2ed..635f5af 100644 --- a/rin/miner/gpu/RinHash-hip/argon2d_device.cuh +++ b/rin/miner/gpu/RinHash-hip/argon2d_device.cuh @@ -1,5 +1,5 @@ -#include -#include +#include +#include #include #include #include diff --git a/rin/miner/gpu/rinhash-gpu-miner.cpp b/rin/miner/gpu/rinhash-gpu-miner.cpp index ffe5452..097a42f 100644 --- a/rin/miner/gpu/rinhash-gpu-miner.cpp +++ b/rin/miner/gpu/rinhash-gpu-miner.cpp @@ -7,13 +7,14 @@ #include #include #include +#include // HIP/ROCm runtime check (using dlopen, no direct headers needed) // Forward declarations for GPU functions extern "C" { - void rinhash_cuda(const uint8_t* input, size_t input_len, uint8_t* output); - void rinhash_cuda_batch(const uint8_t* block_headers, size_t block_header_len, + void rinhash_hip(const uint8_t* input, size_t input_len, uint8_t* output); + void rinhash_hip_batch(const uint8_t* block_headers, size_t block_header_len, uint8_t* outputs, uint32_t num_blocks); void RinHash(const uint32_t* version, const uint32_t* prev_block, const uint32_t* merkle_root, const uint32_t* timestamp, @@ -26,8 +27,8 @@ private: bool gpu_available; // Function pointers for GPU operations - decltype(&rinhash_cuda) gpu_rinhash; - decltype(&rinhash_cuda_batch) gpu_rinhash_batch; + decltype(&rinhash_hip) gpu_rinhash; + decltype(&rinhash_hip_batch) gpu_rinhash_batch; decltype(&RinHash) gpu_RinHash; // Mining parameters @@ -61,30 +62,38 @@ public: } bool loadGPULibrary() { - // Try to load the GPU library - gpu_lib_handle = dlopen("./rocm-direct-output/gpu-libs/librinhash_hip.so", RTLD_LAZY); - if (!gpu_lib_handle) { - std::cerr << "Failed to load GPU library: " << dlerror() << std::endl; - std::cerr << "Make sure to run: sudo cp rocm-direct-output/gpu-libs/librinhash_hip.so /usr/local/lib/" << std::endl; - return false; - } + // Try to load the GPU library + std::cout << "Attempting to load GPU library..." << std::endl; + gpu_lib_handle = dlopen("./rocm-direct-output/gpu-libs/librinhash_hip.so", RTLD_LAZY); + if (!gpu_lib_handle) { + std::cerr << "Failed to load GPU library: " << dlerror() << std::endl; + std::cerr << "Make sure to run: sudo cp rocm-direct-output/gpu-libs/librinhash_hip.so /usr/local/lib/" << std::endl; + std::cerr << "Current working directory: " << std::filesystem::current_path() << std::endl; + return false; + } + std::cout << "GPU library loaded successfully!" << std::endl; - // Load function pointers - gpu_rinhash = (decltype(gpu_rinhash))dlsym(gpu_lib_handle, "rinhash_cuda"); - gpu_rinhash_batch = (decltype(gpu_rinhash_batch))dlsym(gpu_lib_handle, "rinhash_cuda_batch"); - gpu_RinHash = (decltype(gpu_RinHash))dlsym(gpu_lib_handle, "RinHash"); + // Load function pointers + std::cout << "Loading GPU functions..." << std::endl; + gpu_rinhash = (decltype(gpu_rinhash))dlsym(gpu_lib_handle, "rinhash_hip"); + gpu_rinhash_batch = (decltype(gpu_rinhash_batch))dlsym(gpu_lib_handle, "rinhash_hip_batch"); + gpu_RinHash = (decltype(gpu_RinHash))dlsym(gpu_lib_handle, "RinHash"); - if (!gpu_rinhash || !gpu_rinhash_batch || !gpu_RinHash) { - std::cerr << "Failed to load GPU functions: " << dlerror() << std::endl; - dlclose(gpu_lib_handle); - gpu_lib_handle = nullptr; - return false; - } + if (!gpu_rinhash) std::cerr << "Failed to load rinhash_hip" << std::endl; + if (!gpu_rinhash_batch) std::cerr << "Failed to load rinhash_hip_batch" << std::endl; + if (!gpu_RinHash) std::cerr << "Failed to load RinHash" << std::endl; + + if (!gpu_rinhash || !gpu_rinhash_batch || !gpu_RinHash) { + std::cerr << "Failed to load GPU functions: " << dlerror() << std::endl; + dlclose(gpu_lib_handle); + gpu_lib_handle = nullptr; + return false; + } + std::cout << "GPU functions loaded successfully!" << std::endl; // GPU availability will be verified by successful library loading // and function calls working properly - std::cout << "GPU library loaded successfully!" << std::endl; std::cout << "GPU functions ready for mining" << std::endl; gpu_available = true; @@ -149,7 +158,12 @@ public: } // Process batch on GPU - gpu_rinhash_batch(block_headers.data(), block_header_len, hashes.data(), num_nonces); + if (gpu_rinhash_batch) { + gpu_rinhash_batch(block_headers.data(), block_header_len, hashes.data(), num_nonces); + } else { + std::cerr << "GPU batch function not available" << std::endl; + return false; + } hashes_computed += num_nonces; // Check results diff --git a/rin/miner/rinhash-gpu-miner b/rin/miner/rinhash-gpu-miner new file mode 100644 index 0000000..58dca7e Binary files /dev/null and b/rin/miner/rinhash-gpu-miner differ