Майнинг,  Статьи

Компиляция программы XMR-Stak с поддержкой CUDA в (x)ubuntu

В 2023 году доход от майнинга в большинстве случаев перешел в область отрицательных чисел. Тем не менее он все еще актуален, так как зимняя температура предрасполагает к майнингу тепла.

Выбор правильного алгоритма для проведения ​PoW-вычислений может неплохо компенсировать расходы на электрическое отопление.

Так как после перехода Ethereum на PoS приходится маневрировать между разными алгоритмами/программами для майнинга, то желательно использовать самые надежные из них, к тому же имеющие минимальную комиссию.

Одной из программ для майнинга, не потерявших до сих пор своей актуальности, является xmr-stak.

Xmr-stak 2.10.8 — это последняя открытая версия этой программы, распространяемая через Github:

Ее можно скомпилировать под себя с нулевой комиссией и майнить монеты на следующих алгоритмах:

- bbscoin
- bittube
- cryptonight
- cryptonight_bittube2
- cryptonight_masari
- cryptonight_haven
- cryptonight_heavy
- cryptonight_lite
- cryptonight_lite_v7
- cryptonight_lite_v7_xor
- cryptonight_r
- cryptonight_superfast
- cryptonight_turtle
- cryptonight_v7
- cryptonight_v8
- cryptonight_v8_double
- cryptonight_v8_half
- cryptonight_v8_reversewaltz
- cryptonight_v8_zelerius
- cryptonight_v7_stellite
- cryptonight_gpu
- cryptonight_conceal
- graft
- haven
- lethean
- masari
- qrl
- ryo
- torque
- plenteum
- zelerius

Как скомпилировать Xmr-stak в Linux?

Перед компиляцией майнера в системе также должны быть установлены следующие пакеты:

sudo apt install libmicrohttpd-dev libssl-dev cmake build-essential libhwloc-dev

Для компиляции майнера xmrstak для видеокарт Nvidia в системе также нужно установить cuda toolkit, например, его последнюю версию:

В феврале 2023 года для (x)ubuntu 22.04 новейшая версия CUDA Toolkit — это релиз 12.01.

Ее можно установить командами:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

Затем скачиваем исходный код xmr-stak 2.10.8 с Github, например, так:

wget https://github.com/fireice-uk/xmr-stak/archive/refs/tags/2.10.8.tar.gz

Так как майнер будет компилироваться в системе с самой последней версией CUDA Toolkit, то нужно учесть, что она не работает со старой архитектурой видеокарт Nvidia.

Поэтому в файле CmakeLists.txt каталога с исходниками xmr-stak нужно удалить/исправить ненужные упоминания о древней архитектуре compute_20, 30, 35 и 37, например, изменив их на 50 (для видеокарт Nvidia GTX750 на архитектуре Maxwell).

Кроме того, нужно отредактировать файл CmakeLists.txt, удалив в нем код для старых архитектур видеокарт Nvidia, неподдерживаемых CUDA 12 (версии старее 5.0).

Например, было:

set(DEFAULT_CUDA_ARCH "30;35;37;50;52")
...
CUDA_ARCH:STRING=30;35;37;50;52;60;61;62;70;75

стало:

set(DEFAULT_CUDA_ARCH "50;52;61")
...
CUDA_ARCH:STRING=50;52;60;61;62;70;75

В противном случае компиляция майнера завершится с ошибкой:

nvcc fatal : Unsupported gpu architecture 'compute_30'
CMake Error at xmrstak_cuda_backend_generated_cuda_extra.cu.o.Release.cmake:220 (message):
Error generating
...
MakeFiles/xmrstak_cuda_backend.dir/xmrstak/backend/nvidia/nvcc_code/xmrstak_cuda_backend_generated_cuda_extra.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:173: CMakeFiles/xmrstak_cuda_backend.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Кроме того, в конце файла donate-level.hpp (находится в каталоге с исходниками xmrstak), в строке constexpr double fDevDonationLevel изменяем под себя размер доната.

Так как майнер давно не обновляется, смело можно поставить нулевую комиссию:

constexpr double fDevDonationLevel = 0.0 / 100.0;

Теперь переключаемся на совместимую с кодом программы версию gcc, не новее восьмой(как это сделать можно прочитать в статье «О компиляции ccminer в последних версиях ubuntu»), и из каталога xmr-stak с распакованными и подправленными исходниками выполняем команды по сборке исполняемого файла:

mkdir build && cd build
cmake -DMICROHTTPD_ENABLE=OFF  -DCUDA_ARCH=50  -DCUDA_NVCC_FLAGS="--std c++14" ..

где для аргумента DCUDA_ARCH=xxx нужно указать архитектуру видеокарт Nvidia, которые будут поддерживаться майнером.

Процесс генерации файлов сборки программой cmake выглядит примерно так:

-- The C compiler identification is GNU 8.4.0

-- The CXX compiler identification is GNU 8.4.0

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working C compiler: /usr/bin/cc - skipped

-- Detecting C compile features

-- Detecting C compile features - done

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Check for working CXX compiler: /usr/bin/c++ - skipped

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- Looking for pthread.h

-- Looking for pthread.h - found

-- Performing Test CMAKE_HAVE_LIBC_PTHREAD

-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success

-- Found Threads: TRUE

-- Found CUDA: /usr/local/cuda (found suitable version "10.2", minimum required is "7.5")

-- Looking for CL_VERSION_2_2

-- Looking for CL_VERSION_2_2 - found

-- Found OpenCL: /usr/lib/x86_64-linux-gnu/libOpenCL.so (found version "2.2")

-- Found OpenSSL: /usr/local/lib/libcrypto.so (found version "1.1.1o")

fatal: not a git repository (or any of the parent directories): .git

fatal: not a git repository (or any of the parent directories): .git

-- The ASM compiler identification is GNU

-- Found assembler: /usr/bin/cc

-- Configuring done

-- Generating done

-- Build files have been written to: /home/intel39/Downloads/xmr-stak-2.10.8/build

Затем собираем исполняемый файл xmr-stak утилитой-компоновщиком:

make

Процесс сборки майнера xmr-stack с поддержкой CUDA длится достаточно долго и, в случае успеха, заканчивается так:

...

[ 73%] Building NVCC (Device) object CMakeFiles/xmrstak_cuda_backend.dir/xmrstak/backend/nvidia/nvcc_code/xmrstak_cuda_backend_generated_cuda_extra.cu.o

[ 75%] Building NVCC (Device) object CMakeFiles/xmrstak_cuda_backend.dir/xmrstak/backend/nvidia/nvcc_code/xmrstak_cuda_backend_generated_cuda_core.cu.o

[ 77%] Building CXX object CMakeFiles/xmrstak_cuda_backend.dir/xmrstak/backend/nvidia/CudaCryptonightR_gen.cpp.o

[ 80%] Building CXX object CMakeFiles/xmrstak_cuda_backend.dir/xmrstak/backend/nvidia/jconf.cpp.o

[ 82%] Building CXX object CMakeFiles/xmrstak_cuda_backend.dir/xmrstak/backend/nvidia/minethd.cpp.o

[ 84%] Linking CXX shared library bin/libxmrstak_cuda_backend.so

[ 84%] Built target xmrstak_cuda_backend

[ 86%] Building CXX object CMakeFiles/xmrstak_opencl_backend.dir/xmrstak/backend/amd/OclCryptonightR_gen.cpp.o

[ 88%] Building CXX object CMakeFiles/xmrstak_opencl_backend.dir/xmrstak/backend/amd/amd_gpu/gpu.cpp.o

[ 91%] Building CXX object CMakeFiles/xmrstak_opencl_backend.dir/xmrstak/backend/amd/jconf.cpp.o

[ 93%] Building CXX object CMakeFiles/xmrstak_opencl_backend.dir/xmrstak/backend/amd/minethd.cpp.o

[ 95%] Linking CXX shared library bin/libxmrstak_opencl_backend.so

[ 95%] Built target xmrstak_opencl_backend

[ 97%] Building CXX object CMakeFiles/xmr-stak.dir/xmrstak/cli/cli-miner.cpp.o

[100%] Linking CXX executable bin/xmr-stak

[100%] Built target xmr-stak

Майнер xmr-stak и файлы libxmrstak_cuda_backend.so, libxmrstak_opencl_backend.so из каталога …/xmr-stak-2.10.8/build/bin/ нужно переместить в удобное место, настроить майнер и можно нажимать на кнопку бабло добывать тепло.

Для настройки майнера нужно запустить его через терминал и выполнить шаги, которые программа предложит в процессе создания файлов config.txt (алгоритм майнинга, ввести адрес пула, адрес кошелька и т. д.), nvidia.txt и cpu.txt.

Самостоятельно собранный xmr-stak 2.10.8 работает очень надежно, имеет производительность не хуже, чем майнеры с закрытым исходным кодом, например, cryptodredge.

Один комментарий

  • Купрацевич Дмитрий Олегович

    Здравствуйте!

    Меня зовут Дмитрий (Инстаграм: kupratsevich_dima). Я ищу хорошие сайты для покупки и дальнейшего развития.

    Понравился ваш проект cryptoprofi.info. Прямо сейчас рассматриваю его к приобретению.

    Предварительно предлагаю 86000 рублей. Цена может быть пересмотрена в большую сторону.

    Если вам это интересно, то можем обсудить.

    Почта: kuprdimasites@gmail.com
    Телефон (whatsapp): +79959176538
    Telegram: kupratsevich

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *