wip- to clean
This commit is contained in:
130
rin/miner/Dockerfile.rocm-official
Normal file
130
rin/miner/Dockerfile.rocm-official
Normal file
@@ -0,0 +1,130 @@
|
||||
# Dockerfile for building RinHash with ROCm GPU support using official ROCm containers
|
||||
# Based on https://github.com/ROCm/ROCm-docker
|
||||
FROM rocm/rocm-terminal:latest
|
||||
|
||||
# Install additional build tools
|
||||
RUN apt-get update && apt-get install -y \
|
||||
cmake \
|
||||
ninja-build \
|
||||
git \
|
||||
autotools-dev \
|
||||
autoconf \
|
||||
automake \
|
||||
libtool \
|
||||
libcurl4-openssl-dev \
|
||||
libjansson-dev \
|
||||
libssl-dev \
|
||||
libgmp-dev \
|
||||
zlib1g-dev \
|
||||
pkg-config \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Set environment variables for ROCm
|
||||
ENV ROCM_PATH=/opt/rocm
|
||||
ENV HIP_PATH=/opt/rocm
|
||||
ENV PATH=$PATH:/opt/rocm/bin
|
||||
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib
|
||||
|
||||
# Create build directories
|
||||
WORKDIR /build
|
||||
|
||||
# Copy RinHash HIP source files
|
||||
COPY gpu/RinHash-hip/ /build/rinhash-hip/
|
||||
|
||||
# Build RinHash HIP library
|
||||
WORKDIR /build/rinhash-hip
|
||||
RUN mkdir -p build && \
|
||||
cd build && \
|
||||
cmake -G "Ninja" \
|
||||
-DHIP_PLATFORM=amd \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/local \
|
||||
.. && \
|
||||
cmake --build . -j$(nproc) && \
|
||||
cmake --install .
|
||||
|
||||
# Create shared library for integration
|
||||
RUN cd /build/rinhash-hip && \
|
||||
hipcc -shared -fPIC -O3 \
|
||||
-I. \
|
||||
rinhash.hip.cu sha3-256.hip.cu \
|
||||
-o /usr/local/lib/librinhash_hip.so \
|
||||
-lhip_hcc -lhip_device
|
||||
|
||||
# Create output directory
|
||||
RUN mkdir -p /output
|
||||
|
||||
# Copy built binaries to output
|
||||
RUN cp /usr/local/lib/librinhash_hip.so /output/ && \
|
||||
cp /usr/local/bin/rinhash-hip-miner /output/ 2>/dev/null || true
|
||||
|
||||
# Create header files for integration
|
||||
RUN mkdir -p /output/include && \
|
||||
cp /build/rinhash-hip/*.cuh /output/include/ 2>/dev/null || true
|
||||
|
||||
# Create a comprehensive test script
|
||||
RUN echo '#!/bin/bash\n\
|
||||
echo "==============================================="\n\
|
||||
echo " RinHash ROCm GPU Test Script"\n\
|
||||
echo "==============================================="\n\
|
||||
echo ""\n\
|
||||
echo "Testing ROCm GPU support..."\n\
|
||||
if command -v rocm-smi &> /dev/null; then\n\
|
||||
echo "ROCm devices found:"\n\
|
||||
rocm-smi --showid\n\
|
||||
echo ""\n\
|
||||
echo "GPU memory info:"\n\
|
||||
rocm-smi --showmeminfo vram\n\
|
||||
else\n\
|
||||
echo "ROCm runtime not available - GPU acceleration disabled"\n\
|
||||
fi\n\
|
||||
echo ""\n\
|
||||
echo "Built libraries:"\n\
|
||||
ls -la *.so\n\
|
||||
echo ""\n\
|
||||
echo "Library dependencies:"\n\
|
||||
ldd librinhash_hip.so 2>/dev/null || echo "Could not check dependencies"\n\
|
||||
echo ""\n\
|
||||
echo "HIP compiler version:"\n\
|
||||
hipcc --version 2>/dev/null || echo "HIP compiler not available"\n\
|
||||
' > /output/test-rocm.sh && chmod +x /output/test-rocm.sh
|
||||
|
||||
# Create integration guide
|
||||
RUN echo '# RinHash ROCm GPU Integration Guide\n\
|
||||
\n\
|
||||
## Prerequisites\n\
|
||||
1. Install ROCm runtime on host system:\n\
|
||||
sudo apt install rocm-dev hip-runtime-amd\n\
|
||||
\n\
|
||||
2. Install ROCm kernel modules (if not already installed):\n\
|
||||
sudo apt install rocm-dkms\n\
|
||||
\n\
|
||||
## Integration Steps\n\
|
||||
\n\
|
||||
1. Copy the shared library:\n\
|
||||
sudo cp librinhash_hip.so /usr/local/lib/\n\
|
||||
sudo ldconfig\n\
|
||||
\n\
|
||||
2. Test ROCm support:\n\
|
||||
./test-rocm.sh\n\
|
||||
\n\
|
||||
3. For cpuminer integration:\n\
|
||||
- Copy include files to your build system\n\
|
||||
- Link against librinhash_hip.so\n\
|
||||
- Use HIP runtime functions for GPU acceleration\n\
|
||||
\n\
|
||||
## Usage Example\n\
|
||||
```c\n\
|
||||
#include "rinhash_device.cuh"\n\
|
||||
\n\
|
||||
// Initialize HIP\n\
|
||||
hipInit(0);\n\
|
||||
\n\
|
||||
// Call RinHash GPU function\n\
|
||||
rinhash_cuda(input, input_len, output);\n\
|
||||
```\n\
|
||||
' > /output/INTEGRATION.md
|
||||
|
||||
# Default command
|
||||
CMD ["sh", "-c", "echo 'ROCm GPU build completed successfully!' && ls -la /output/ && echo '' && echo 'Integration guide available in INTEGRATION.md'"]
|
||||
|
||||
Reference in New Issue
Block a user