Skip to content

first look dashboard benchmark #94

first look dashboard benchmark

first look dashboard benchmark #94

Workflow file for this run

name: Build LuminousMiner
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build-linux:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
#==========================================================================
# INSTALL BASE TOOLS
#==========================================================================
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
libstdc++-12-dev \
cppcheck \
checkinstall \
clang-15 \
clang++-15 \
wget \
git \
libgnutls28-dev
# Clean apt cache
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
# Clean apt cache
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
- name: Install CMake 3.26.4
run: |
wget --no-check-certificate https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.sh
sudo sh cmake-3.26.4-linux-x86_64.sh --skip-license --prefix=/usr/local
cmake --version
# Clean downloaded file
rm -f cmake-3.26.4-linux-x86_64.sh
#==========================================================================
# CACHE SYSTEM
#==========================================================================
- name: Cache CUDA 13.1
id: cache-cuda
uses: actions/cache@v4
with:
path: /usr/local/cuda-13.1
key: cuda-13.1-ubuntu-22.04-v2
- name: Cache OpenSSL 1.1.1
id: cache-openssl
uses: actions/cache@v4
with:
path: /usr/local/ssl
key: openssl-1.1.1-ubuntu-22.04-v2
- name: Cache Boost 1.86.0
id: cache-boost
uses: actions/cache@v4
with:
path: |
/usr/local/include/boost
/usr/local/lib/libboost_*
key: boost-1.86.0-ubuntu-22.04-static-v2
- name: Cache OpenCL 3.0.19
id: cache-opencl
uses: actions/cache@v4
with:
path: |
/usr/local/include/CL
/usr/local/include/opencl
/usr/local/lib/libOpenCL.so*
/usr/local/lib/cmake/OpenCL
/usr/local/share/OpenCL
key: opencl-sdk-3.0.19-ubuntu-22.04-v1
#==========================================================================
# CUDA 13.1 INSTALLATION
#==========================================================================
- name: Install CUDA 13.1
if: steps.cache-cuda.outputs.cache-hit != 'true'
run: |
# Download CUDA repository pin file
wget --no-check-certificate https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
# Download CUDA local installer
wget --no-check-certificate https://developer.download.nvidia.com/compute/cuda/13.1.0/local_installers/cuda-repo-ubuntu2204-13-1-local_13.1.0-590.44.01-1_amd64.deb
# Install CUDA repository
sudo dpkg -i cuda-repo-ubuntu2204-13-1-local_13.1.0-590.44.01-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-13-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
# Update and install CUDA toolkit
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-1
# CLEAN UP CUDA FILES
echo "🧹 Cleaning up CUDA installation files..."
rm -f cuda-repo-ubuntu2204-13-1-local_13.1.0-590.44.01-1_amd64.deb
sudo rm -rf /var/cuda-repo-ubuntu2204-13-1-local
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
echo "βœ… CUDA 13.1 installed successfully"
- name: Setup CUDA environment
run: |
# Add CUDA binaries to PATH
echo "/usr/local/cuda-13.1/bin" >> $GITHUB_PATH
# Configure CUDA environment variables
echo "LD_LIBRARY_PATH=/usr/local/cuda-13.1/lib64:${LD_LIBRARY_PATH}" >> $GITHUB_ENV
echo "CUDA_HOME=/usr/local/cuda-13.1" >> $GITHUB_ENV
echo "CUDA_PATH=/usr/local/cuda-13.1" >> $GITHUB_ENV
echo "CUDACXX=/usr/local/cuda-13.1/bin/nvcc" >> $GITHUB_ENV
# Create symbolic link for generic CUDA path
if [ ! -L "/usr/local/cuda" ]; then
sudo ln -sf /usr/local/cuda-13.1 /usr/local/cuda
fi
#==========================================================================
# OPENSSL 1.1.1 INSTALLATION
#==========================================================================
- name: Install OpenSSL 1.1.1
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: |
git clone https://github.com/openssl/openssl.git
cd openssl
./Configure
make
sudo make install
# CLEAN UP OPENSSL FILES
cd ..
echo "🧹 Cleaning up OpenSSL installation files..."
sudo rm -rf openssl
echo "βœ… OpenSSL 1.1.1 installed successfully"
#==========================================================================
# BOOST 1.86.0 INSTALLATION
#==========================================================================
- name: Install Boost 1.86.0
if: steps.cache-boost.outputs.cache-hit != 'true'
run: |
# Download Boost 1.86.0
wget --no-check-certificate https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz
tar -xzf boost_1_86_0.tar.gz
cd boost_1_86_0
# Bootstrap Boost
./bootstrap.sh --prefix=/usr/local
# Build and install libraries
./b2 release
sudo ./b2 install
# CLEAN UP BOOST FILES
cd ..
echo "🧹 Cleaning up Boost installation files..."
sudo rm -rf boost_1_86_0 boost_1_86_0.tar.gz
echo "βœ… Boost 1.86.0 installed successfully"
#==========================================================================
# OPENCL 3.0.19 INSTALLATION
#==========================================================================
- name: Install OpenCL SDK 3.0.19
if: steps.cache-opencl.outputs.cache-hit != 'true'
run: |
echo "πŸ“₯ Cloning OpenCL-SDK..."
git clone --depth 1 https://github.com/KhronosGroup/OpenCL-SDK.git
cd OpenCL-SDK
echo "πŸ”„ Fetching tags..."
git fetch --all --tags
git checkout tags/v2025.07.23
echo "πŸ“¦ Initializing submodules..."
git submodule init
git submodule update
echo "πŸ—οΈ Configuring OpenCL-SDK build..."
mkdir build
cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DOPENCL_SDK_BUILD_SAMPLES=OFF \
-DOPENCL_SDK_TEST_SAMPLES=OFF \
-DCMAKE_INSTALL_PREFIX=/usr/local \
cmake .. -DNVCC_ARCH_COMPUTE=89
echo "πŸ”¨ Building and installing OpenCL-SDK..."
sudo cmake --build . --target install
cd ../..
echo "🧹 Cleaning up OpenCL-SDK sources..."
sudo rm -rf OpenCL-SDK
echo "βœ… OpenCL SDK 3.0.19 installed successfully"
#==========================================================================
# VERIFY DEPENDENCIES
#==========================================================================
- name: Verify all dependencies
run: |
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "πŸ” DEPENDENCY VERIFICATION"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# CMake version
echo "βœ“ CMake: $(cmake --version | head -n1)"
# CUDA version
if [ -f "/usr/local/cuda/bin/nvcc" ]; then
echo "βœ“ CUDA: $(/usr/local/cuda/bin/nvcc --version | grep release | awk '{print $5}' | cut -d',' -f1)"
else
echo "βœ— CUDA not found"
exit 1
fi
# OpenSSL version
if [ -f "/usr/local/lib64/libssl.so" ]; then
echo "βœ“ OpenSSL: found"
else
echo "βœ— OpenSSL not found"
exit 1
fi
# Boost version
if [ -f "/usr/local/include/boost/version.hpp" ]; then
BOOST_VERSION=$(grep "#define BOOST_LIB_VERSION" /usr/local/include/boost/version.hpp | awk '{print $3}' | tr -d '"')
echo "βœ“ Boost: ${BOOST_VERSION}"
else
echo "βœ— Boost not found"
exit 1
fi
# OpenCL version
if [ -f "/usr/local/include/CL/cl.h" ]; then
OPENCL_VERSION=$(grep "#define CL_TARGET_OPENCL_VERSION" /usr/local/include/CL/cl.h | awk '{print $3}')
echo "βœ“ OpenCL: 3.0.19 (target: ${OPENCL_VERSION})"
else
echo "βœ— OpenCL not found"
exit 1
fi
# Clang version
echo "βœ“ Clang: $(clang-15 --version | head -n1)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "βœ… All dependencies verified successfully"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
#==========================================================================
# CMAKE CONFIGURATION
#==========================================================================
- name: Configure CMake
run: |
CMAKE_CMD="cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_NVIDIA=ON \
-DBUILD_AMD=ON \
-DBUILD_CPU=ON \
-DENABLE_LTO=OFF \
-DENABLE_NATIVE=OFF"
$CMAKE_CMD
$CMAKE_CMD
env:
CUDA_HOME: /usr/local/cuda-13.1
CUDACXX: /usr/local/cuda-13.1/bin/nvcc
LD_LIBRARY_PATH: /usr/local/cuda-13.1/lib64:/usr/local/ssl/lib
#==========================================================================
# BUILD PROJECT
#==========================================================================
- name: Build project
run: |
cd build
# Build with all available CPU cores
make -sj $(nproc)
- name: Clean build intermediates
run: |
echo "🧹 Cleaning up build intermediate files..."
# Remove CMake temporary files
find build -type f -name "*.o" -delete
find build -type f -name "*.a" -delete 2>/dev/null || true
find build -type d -name "CMakeFiles" -exec rm -rf {} + 2>/dev/null || true
# Keep only final binaries and libraries
echo "βœ… Build cleanup complete"
- name: Verify build outputs
run: |
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "πŸ“¦ BUILD OUTPUTS"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Check build directory structure
echo "Build directory structure:"
ls -la build/ || echo "No build directory"
# Check for binaries in common locations
if [ -d "build/bin" ]; then
echo ""
echo "Binaries in build/bin/:"
ls -lh build/bin/
echo ""
echo "Binary types:"
for f in build/bin/*; do
if [ -f "$f" ]; then
echo "$(basename $f):"
file "$f"
fi
done
fi
if [ -d "build/lib" ]; then
echo ""
echo "Libraries in build/lib/:"
ls -lh build/lib/ | head -10
fi
if [ -d "bin" ]; then
echo ""
echo "Binaries in bin/:"
ls -lh bin/
fi
if [ -d "lib" ]; then
echo ""
echo "Libraries in lib/:"
ls -lh lib/ | head -10
fi
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
#==========================================================================
# BUILD SUMMARY
#==========================================================================
- name: Build Summary
if: always()
run: |
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "βœ… LUMINOUSMINER BUILD COMPLETE"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "πŸ“¦ Platform: Ubuntu 22.04"
echo "πŸ“¦ Build Type: Release"
echo "πŸ“¦ CUDA: 13.1 (Blackwell support)"
echo "πŸ“¦ Boost: 1.86.0"
echo "πŸ“¦ OpenSSL: 1.1.1"
echo "πŸ“¦ OpenCL: 3.0.19"
echo "πŸ“¦ Compiler: Clang 15"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Check all possible artifact locations
ARTIFACTS_FOUND=false
if [ -d "build/bin" ] && [ "$(ls -A build/bin 2>/dev/null)" ]; then
echo "βœ… Build artifacts found in build/bin/"
ARTIFACTS_FOUND=true
fi
if [ -d "bin" ] && [ "$(ls -A bin 2>/dev/null)" ]; then
echo "βœ… Build artifacts found in bin/"
ARTIFACTS_FOUND=true
fi
if [ "$ARTIFACTS_FOUND" = false ]; then
echo "⚠️ No build artifacts detected (may be normal depending on project structure)"
echo ""
echo "πŸ” Searching for build outputs:"
find build -name "*.so" -o -name "*.a" -o -type f -executable 2>/dev/null | grep -v ".git" | head -20 || echo "No libraries or executables found"
else
echo ""
echo "βœ… Build completed successfully!"
fi