96 lines
2.5 KiB
Docker
96 lines
2.5 KiB
Docker
# Complete Dockerfile for building RinHash with ROCm GPU support and cpuminer integration
|
|
FROM rocm/dev-ubuntu-22.04:5.7-complete
|
|
|
|
# Install build tools and dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
cmake \
|
|
ninja-build \
|
|
git \
|
|
wget \
|
|
curl \
|
|
pkg-config \
|
|
autotools-dev \
|
|
autoconf \
|
|
automake \
|
|
libtool \
|
|
libcurl4-openssl-dev \
|
|
libjansson-dev \
|
|
libssl-dev \
|
|
libgmp-dev \
|
|
zlib1g-dev \
|
|
&& 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/
|
|
|
|
# Copy cpuminer source files
|
|
COPY cpuminer/cpuminer-opt-rin/ /build/cpuminer/
|
|
|
|
# Build RinHash HIP library first
|
|
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 cpuminer 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
|
|
|
|
# Build cpuminer with ROCm support
|
|
WORKDIR /build/cpuminer
|
|
|
|
# Configure cpuminer
|
|
RUN ./autogen.sh && \
|
|
./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer" \
|
|
CPPFLAGS="-I/usr/local/include" \
|
|
LDFLAGS="-L/usr/local/lib -lrinhash_hip"
|
|
|
|
# Build cpuminer
|
|
RUN make -j$(nproc)
|
|
|
|
# Create output directory
|
|
RUN mkdir -p /output
|
|
|
|
# Copy built binaries to output
|
|
RUN cp cpuminer /output/ && \
|
|
cp /usr/local/lib/librinhash_hip.so /output/ && \
|
|
cp /usr/local/bin/rinhash-hip-miner /output/ 2>/dev/null || true
|
|
|
|
# Create a simple test script
|
|
RUN echo '#!/bin/bash\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\
|
|
else\n\
|
|
echo "ROCm runtime not available - GPU acceleration disabled"\n\
|
|
fi\n\
|
|
echo "Available algorithms:"\n\
|
|
./cpuminer --help | grep -A 20 "algorithms:"\n\
|
|
' > /output/test-rocm.sh && chmod +x /output/test-rocm.sh
|
|
|
|
# Default command
|
|
CMD ["sh", "-c", "echo 'Build completed successfully! Binaries available in /output/' && ls -la /output/"]
|
|
|
|
|