
Компиляция программы 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