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

Компиляция майнера xmrig-nvidia в Linux для видеокарт, поддерживающих старые версии CUDA

Относительно старые видеокарты Nvidia, например, GeForce GT770, имеют неплохую теоретическую производительность при проведении операций с плавающей запятой (у GT770 она равна 138.9 GFLOPS).

Это немного меньше, чем GeForce GTX 1660 SUPER (157.1 GFLOPS) и больше, чем у Nvidia GTX 1066 (136.7 GFLOPS).

В связи с этим видеокарты уровня GeForce GT770 теоретически должны демонстрировать схожий с GTX 1660S/ GTX 1060 хешрейт на алгоритмах, использующих до 2 GB VRAM.

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

Так как большинство майнеров выпускается с закрытыми исходными кодами, то выбор доступных программ не столь велик, но все же позволяет несколько расширить ассортимент доступных алгоритмов и «поиграться» с майнингом на старых видеокартах даже в современных условиях.

Постепенное отсеивание старых видеокарт производителями понятно и объясняется их стремлением продать побольше новой продукции. Отсутствие поддержки старых видеокарт в майнерах может быть связано с ленью разработчиков, а также получением «поощрения» от производителей компьютерного железа.

Ищущий обрящет…

При желании каждый может произвести нехитрые манипуляции и скомпилировать майнер с открытым исходным кодом под старую версию CUDA.

В настоящее время такая манипуляция возможна для майнера xmrig и его клонов.

В статье рассматривается процесс компиляции майнера xmrig-nvidia 2.14.5 с включением поддержки технологии CUDA 8.0 (compute capability 3.0).

Как скомпилировать майнер для видеокарт, поддерживающих устаревшую версию технологии CUDA?

Для сборки майнера xmrig-nvidia (а также любой другой программы для видеокарт Nvidia) нужно:

  • установить нужную версию CUDA SDK на компьютер;
  • скачать исходный код майнера;
  • установить нужные пакеты в системе;
  • сконфигурировать код программы нужным образом и собрать из него исполняемый файл майнера.

Некоторые особенности установки CUDA SDK

При выборе CUDA SDK нужно учитывать, что старые видеокарты требуют использования пакета SDK совместимого с установленными драйверами, а также учета их compute capability, например:

  • версии CUDA 9 (включительно) и выше не поддерживают вычисления на видеокартах Nvidia с архитектурой Fermi. Для них нужно устанавливать восьмую версию CUDA, которая в Linux использует драйвера 375.26;
  • видеокарты с архитектурой Kepler поддерживаются до версии CUDA SDK 10.2 включительно (Linux драйвера от 440.33 включительно до 450.36.06 исключительно);
  • CUDA 7.5 и ниже не поддерживает видеокарты с архитектурой Pascal (GTX1000-й серии в Linux поддерживаются только начиная с драйверов 352.31).

Для компиляции и запуска майнинга на видеокартах типа Nvidia GeForce GT770 (архитектура Kepler) нужно использовать версию CUDA SDK не новее 10.2, а также драйвера до версии 450.36.06 исключительно, но новее 440.33.

Установка CUDA SDK 10.2 и патчей делается отсюда (Samples при установке ставить не обязательно).

Если планируется использование видеокарт с ядром Fermi, то нужно использовать CUDA SDK не новее CUDA SDK 8.0, а также драйвера версий от 375.26 (включительно) до 375.26 (исключительно).

Установка CUDA SDK 8.0 делается отсюда.

При инсталляции набора инструментов разработчика CUDA обычно производится и установка подходящих драйверов (они входят в состав SDK). Если используется установочный скрипт с официального сайта Nvidia, то установку драйвера нужно делать при отключенном x-сервере, из консоли TTY.

Если в системе уже установлены драйвера Nvidia, то при установке CUDA SDK нужно снять выделение, отвечающее за установку базовой версии драйвера.

В новой системе предварительно нужно отключить Nouveau kernel driver, иначе установка с помощью скрипта будет завершаться с ошибкой.

Отключение драйвера Nouveau делается следующими действиями:

создается файл blacklist-nouveau.conf, например, командой

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

в него вносится текст:

blacklist nouveau

options nouveau modeset=0
сохраняются изменения, обновляется ядро командой

sudo update-initramfs -u

и выполняется перезагрузка

После установки набора инструментов разработчика CUDA нужной версии, необходимо инсталлировать патчи, исправляющие ошибки и улучшающие быстродействие SDK (они находятся на той же странице, где и основной пакет установки).

Сборка майнера xmrig-nvidia из исходного кода

Компиляция майнера xmrig-nvidia производится из исходного кода (скачивается с Github) путем последовательного выполнения команд по установке необходимых пакетов и сборке майнера.

Нужные пакеты устанавливаются командой:

sudo apt-get install git build-essential cmake libuv1-dev nvidia-cuda-dev nvidia-cuda-toolkit libmicrohttpd-dev libssl-dev

Скачивание кода майнера произвордится командой:

git clone https://github.com/xmrig/xmrig-nvidia.git

Затем производится переход в папку со скачанными исходниками, создается папка build:

cd xmrig-nvidia && mkdir build && cd build

После этого запускается генерация файлов управления сборкой на основе директив, прописанных в CmakeLists.txt:

cmake .. -DCUDA_ARCH="20;30;50;60" -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0

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

В качестве числовых значений переменной DCUDA_ARCH= нужно указать версии архитектуры видеокарт, которые будут поддерживаться майнером в соответствии с compute capability видеокарт (подробнее о соответствии версий CUDA и драйверов в статье «О технологии многопотоковых вычислений CUDA в видеокартах компании Nvidia»).

Кроме того, для конфигурирования майнера под свои нужды можно использовать следующие параметры команды cmake:

  • -DWITH_AEON=OFF (выключение поддержки CryptoNight-Lite);
  • -DWITH_HTTPD=OFF (сборка майнера без встроенного http сервера и API);
  • -DUV_LIBRARY=/usr/lib/x86_64-linux-gnu/libuv.a (использование статической версии libuv);
  • -DCUDA_TOOLKIT_ROOT_DIR= (путь к CUDA SDK на компьютере, на котором производится сборка майнера, для CUDA SDK 8.0 это /usr/local/cuda-8.0).

При успешном выполнении команды cmake появятся строки:

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

-- Found NVML: /usr/local/cuda-8.0/include

-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.2g")

-- The ASM compiler identification is GNU

-- Found assembler: /usr/bin/cc

-- Looking for syslog.h

-- Looking for syslog.h - found

-- Found MHD: /usr/lib/x86_64-linux-gnu/libmicrohttpd.so

-- Configuring done

-- Generating done

-- Build files have been written to: путь

После этого, для сборки манера нужно выполнить команду:

make

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

По окончанию сборки появится сообщение:

[100%] Linking CXX executable xmrig-nvidia

[100%] Built target xmrig-nvidia

Готовый файл майнера будет находиться в каталоге build:

При использовании старых видеокарт Nvidia особый интерес вызывает майнинг на алгоритме CN_GPU, так как GPU с поддержкой многопотоковых вычислений CUDA обычно неплохо себя показывают на этом algo и некоторых других разновидностях Cryptonight.

Пример скрипта для запуска майнера xmrig-nvidia в Linux для майнинга на алгоритме cn_haven на видеокарте Nvidia:

#!/bin/sh

export GPU_FORCE_64BIT_PTR=0

export GPU_MAX_HEAP_SIZE=100

export GPU_USE_SYNC_OBJECTS=1

export GPU_MAX_ALLOC_PERCENT=100

export GPU_SINGLE_ALLOC_PERCENT=100

sudo ./xmrig-nvidia -a cryptonight-heavy/xhv -o cryptonight_haven.eu.mine.zergpool.com:4452 -u wallet -p c=BTC,worker -k --donate-level=0 --keepalive --cuda-bfactor=8

sleep 10

Успешная работа видеокарты Nvidia GT770 в самостоятельно скомпилированном майнере xmrig-nvidia с поддержкой CUDA 8.0 в xubuntu 16.04, драйвер 384.130 (майнинг на алгоритме cn_haven):

На алгоритме CN_GPU майнер xmrig-nvidia с поддержкой CUDA 8.0 на Nvidia GT770 выдает 270 h/s (к видеокарте подключен монитор):

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

Благодаря установке CUDA SDK 8.0 на компьютере можно самостоятельно компилировать и другие майнеры с открытым исходным кодом, например, verthashminer, ethminer, xmrig, XMR-Stack, ccminer и другие.

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

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

English EN Français FR Deutsch DE Português PT Русский RU Español ES Türkçe TR