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

Компиляция майнера ccminer для видеокарт Nvidia в Linux

Получение прибыли в майнинге часто связано со своевременным переключением вычислительной мощности на более выгодную монету. При этом желательно использовать самый быстрый майнер, который вызывает доверие и не содержит вредоносного кода.

С этой точки зрения лучше всего использовать майнеры с открытым исходным кодом, которые можно самостоятельно собрать под свою систему из исходного кода.

Одной из таких программ является ccminer — майнер для видеокарт Nvidia, который может быть достаточно быстро сконфигурирован под практически любой новый алгоритм.

В данной статье рассматривается последовательность действий по компиляции ccminer из исходного кода на примере операционной системы xubuntu (ядро 5.4.0-120-generic).

Последовательность действий по сборке майнера ccminer в операционной системе с ядром Linux

Компиляция ccminer, кроме наличия исходного кода (скачивается с одного из репозиториев на Github), требует установки в системе ряда служебных пакетов, включая cuda_runtime и драйвера nvidia.

При установке CUDA/драйверов нужно учитывать соответствие версий CUDA Toolkit и драйверов, установленных в системе (Linux x86_64 / Windows x86_64):

CUDA 11.7 GA >=515.43.04 >=516.01

CUDA 11.6 Update 2 >=510.47.03 >=511.65

CUDA 11.6 Update 1 >=510.47.03 >=511.65

CUDA 11.6 GA >=510.39.01 >=511.23

CUDA 11.5 Update 2 >=495.29.05 >=496.13

CUDA 11.5 Update 1 >=495.29.05 >=496.13

CUDA 11.5 GA >=495.29.05 >=496.04

CUDA 11.4 Update 4 >=470.82.01 >=472.50

CUDA 11.4 Update 3 >=470.82.01 >=472.50

CUDA 11.4 Update 2 >=470.57.02 >=471.41

CUDA 11.4 Update 1 >=470.57.02 >=471.41

CUDA 11.4.0 GA >=470.42.01 >=471.11

CUDA 11.3.1 Update 1 >=465.19.01 >=465.89

CUDA 11.3.0 GA >=465.19.01 >=465.89

CUDA 11.2.2 Update 2 >=460.32.03 >=461.33

CUDA 11.2.1 Update 1 >=460.32.03 >=461.09

CUDA 11.2.0 GA >=460.27.03 >=460.82

CUDA 11.1.1 Update 1 >=455.32 >=456.81

CUDA 11.1 GA >=455.23 >=456.38

CUDA 11.0.3 Update 1 >= 450.51.06 >= 451.82

CUDA 11.0.2 GA >= 450.51.05 >= 451.48

CUDA 11.0.1 RC >= 450.36.06 >= 451.22

CUDA 10.2.89 >= 440.33 >= 441.22

CUDA 10.1.105 >= 418.39 >= 418.96

CUDA 10.0.130 >= 410.48 >= 411.31

CUDA 9.2 (Update 1) >= 396.37 >= 398.26

CUDA 9.2 (9.2.88) >= 396.26 >= 397.44

CUDA 9.1 (9.1.85) >= 390.46 >= 391.29

CUDA 9.0 (9.0.76) >= 384.81 >= 385.54

CUDA 8.0 (8.0.61 GA2) >= 375.26 >= 376.51

CUDA 8.0 (8.0.44) >= 367.48 >= 369.30

CUDA 7.5 (7.5.16) >= 352.31 >= 353.66

CUDA 7.0 (7.0.28) >= 346.46 >= 347.62

CUDA Toolkit устанавливается согласно инструкциям с сайта Nvidia. Иногда при этом возникают ошибки типа

Следующие пакеты имеют неудовлетворённые зависимости: cuda : Зависит: cuda-11-7 (>= 11.7.0) но он не будет установлен E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.

Для устранения проблемы нужно полностью очистить систему от старых драйверов и файлов CUDA командами:

sudo apt clean
sudo apt update
sudo apt purge cuda
sudo apt purge nvidia-*
sudo apt autoremove

а затем завершить установку CUDA Toolkit:

sudo apt install cuda

Затем для сборки майнера производится установка служебных пакетов:

sudo apt-get update 
sudo apt-get install libcurl4-openssl-dev libssl-dev libjansson-dev automake autotools-dev build-essential -y 
sudo apt-get install clang lld -y

Скачивание исходников (например, с репозитория xaya) и переход в каталог с ними:

git clone https://github.com/xaya/ccminer.git

cd ccminer

При необходимости, перед компиляцией можно подкорректировать файл Makefile.am в соответствии с версией CUDA, поддерживаемой видеокартой (убрать или добавить # в нужной строке).

#nvcc_ARCH += -gencode=arch=compute_75,code=\"sm_75,compute_75\"
#nvcc_ARCH += -gencode=arch=compute_61,code=\"sm_61,compute_61\"
#nvcc_ARCH += -gencode=arch=compute_52,code=\"sm_52,compute_52\"
nvcc_ARCH += -gencode=arch=compute_50,code=\"sm_50,compute_50\"
#nvcc_ARCH += -gencode=arch=compute_35,code=\"sm_35,compute_35\"
#nvcc_ARCH += -gencode=arch=compute_30,code=\"sm_30,compute_30\"
#nvcc_ARCH += -gencode=arch=compute_20,code=\"sm_21,compute_20\"

В данном случае активирована строка кода, обеспечивающая майнинг на видеокартах с compute_capability 5.0 (например, Nvidia GTX 750Ti) и новее.

Нужно учитывать, что новые версии CUDA Toolkit/драйвера полноценно не поддерживают старые архитектуры GPU. Поэтому, установив CUDA Toolkit 11.7 (в Linux драйвера 515.43.04+), не получится скомпилировать майнер для видеокарт с compute_50 — 52 (Maxwell) и ниже.

Видеокарты Nvidia на архитектуре Fermi (compute capability 2.0 и 2.1) и Kepler (30, 32, 35, 37) не поддерживаются версиями CUDA 9 и новее. Поддержка Maxwell (50, 52, 53) будет прекращена начиная с версии CUDA 12.0.

Поэтому, например, для компиляции майнера для видеокарт Nvidia GTX 760 с compute_capability 3.0 в Linux нужен CUDA Toolkit не новее версии 11.4 Update 2, а также не имеет особого смысла ставить драйвер позже версии 470.57.02.

Затем выполняют скрипт build.sh, в котором прописаны команды autogen.sh, configure.sh и другие для компиляции исходного кода ccminer в исполняемый файл:

./build.sh

В итоге в каталоге ccminer появится одноименный исполняемый файл (майнер ccminer версии 2.3):

Пример использования ccminer для майнинга на zergpool (с кодом, обеспечивающим -40% от комиссии пула и автопереводом намайненных монет в LTC):

 ccminer -a neoscrypt-xaya -o stratum+tcp://neoscrypt-xaya.eu.mine.zergpool.com:4238 -u wallet -p c=LTC,worker,refcode=81de238596774683dd427a9d57bae6af

Майнинг на алгоритме neoscrypt-xaya в самостоятельно собранном ccminer (видеокарта Nvidia GTX 750Ti, драйвер 515.48.07, xubuntu 18.04):

Решение проблем, возникающих при компиляции ccminer

Если при компиляции в конце появляется ошибка

...[all-recursive] Error 1 … recipe for target 'all-recursive' failed

то нужно найти самую первую часть вывода терминала с ошибкой (среди текста, который появляется при выполнении утилитой make команд скрипта build), например, при появлении ошибки:

nvcc fatal : Unsupported gpu architecture 'compute_30'
Makefile:2737: recipe for target 'equi/cuda_equi.o' failed
make[2]: *** [equi/cuda_equi.o] Error 1
make[2]: *** Ожидание завершения заданий…

причиной проблемы является отсутствие поддержки compute_30 видеокарт в установленной в системе версии CUDA (она слишком новая). В этом случае на компьютере нужно установить более старую версию CUDA Toolkit.

Кроме того, в исходниках (файл Makefile.am) нужно подкорректировать код, содержащий ссылки на архитектуру compute_30, например,

arch=compute_30,code=\"sm_30,compute_30
arch=compute_35,code=\"sm_35,compute_35

заменить на

arch=compute_50,code=\"sm_50,compute_50

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

Ваш адрес email не будет опубликован.

English English Русский Русский