Статьи

Об ограничениях видеокарт AMD на размер доступного DAG при майнинге на алгоритме Ethash

С каждой эпохой майнинга на алгоритме Ethash увеличивается на 8 Мб размер данных DAG. В связи с этим рано или поздно прекращают майнить видеокарты с недостаточным объемом памяти. Теоретически они должны перестать майнить, когда суммарный объем данных DAG и памяти, резервируемой системой, превысит размер всей видеопамяти. На практике, у видеокарт AMD из-за особенностей технологии OpenCL, а также драйверов, дата остановки майнинга на алгоритме Ethash наступает значительно раньше.

Это связано с практической реализацией алгоритма параллельных вычислений OpenCL и работой с памятью в майнере и драйверах.

Ошибка выделения памяти clCreateBuffer (-61) в консоли майнера Phoenix при бенчмарке AMD Radeon RX 464 на 352-й эпохе майнинга Ethash:

Размер DAG для блокчейна Ethereum достигнет 4 ГБ на 383-й эпохе в конце декабря 2020 года. При этом четырехгиговки от АМД прекратят майнинг на полгода раньше, а восьмигиговки, которые теоретически должны майнить еще несколько лет, прекратят свою работу в сети Ethereum/Ethereum Classic уже в конце 2020 года.

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

Почему прекращается майнинг видеокарт AMD на алгоритме Ethash, хотя они еще имеют достаточный объем видеопамяти?

OpenCl – это технология для работы с параллельными вычислениями, развивающаяся усилиями консорциума Khronos Compute, включающего в себя представителей из более 150-и крупных компаний, включая AMD, Nvidia, Google, Intel, Huawei, Samsung, Sony и многих других. Каждая из этих компаний по-своему реализует технологию OpenCl, адаптируя ее под конкретное железо посредством драйверов и входящий в их состав библиотек.

Основная причина остановки майнинга на видеокартах AMD при наличии достаточного размера видеопамяти кроется именно в драйверах, а точнее в проблемах с практической реализацией технологии OpenCL.

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

Удивляет тот факт, что даже в Linux видеокарты AMD пока не могут задействовать всю видеопамять для вычислений. Рассмотрим подробнее, как себя ведут видеокарты AMD при проведении вычислений, задействующих большие объемы видеопамяти.

Тестирование максимального размера видеопамяти, задействованного в технологии OpenCl на картах AMD

Максимальный доступный размер памяти, с которым может работать Claymore Dual miner версии 15.0 можно посмотреть в его логах. Они включаются в батнике командой:

-dbg 1

Согласно логу Claymore 15.0, максимальный размер DAG, как для 4-х, так и для 8-и гиговых карт в Windows 8.1 на драйверах от Робингуда даже с монитором, подключенным к интегрированной карте равен 3840 MB. Это означает, что Клеймор перестанет работать на 4 Гб картах уже на 352-й эпохе в июле2020 года.

Пример логов майнера Клеймор 15.0 с информацией о максимально доступном объеме видеопамяти:

GPU #0: Ellesmere (Radeon RX 580 Series), 4096 MB available, 36 compute units

02:05:07:120 d00 gpu 0 max alloc size is 3840 MB

Как видно из лога майнера, максимально доступный размер памяти видеокарты AMD с 4 Gb коррелирует (хотя и меньше на 85 Мб) с максимально доступным в системе Windows 8.1 объемом Vmemory. В данном случае он равен:

4096-(3621-3450)=3925 Мб

где:

4096 Мб – размер видеопамяти видеокарты;

3450 Мб – размер DAG (информацию можно взять из консоли майнера Клеймор, нажав кнопку s);

3621 Гб – размер занятой видеопамяти (можно взять из программы GPU-Z на вкладке Sensors, значение Memory Used).

Разница между расчетным размером доступной видеопамяти (3925 Мб) и тем, что показывает Клеймор (3840 Мб) связана с драйверами.

Для карт AMD, имеющих 8 Гб видеопамяти на любых драйверах до версии 20.1.4 включительно, размер доступного DAG равен всего 4048 Гб:

Доступный allocation size видеопамяти также можно посмотреть в майнере ethminer командой:

ethminer --list-devices

pause

Она выдаст информацию о максимальном размере сегмента выделяемой памяти для нужд Опен СиЭль.

Для видеокарт AMD c 8 гигабайтами памяти в ethminer этот размер равен 3,95 Гб:

Для видеокарт AMD c 4 гигабайтами видеопамяти в ethminer этот размер равен 3,75 Гб:

Доступный размер Cl Max Allocation в операционных системах Windows и Linux одинаков для всех драйверов (исключая rocm).

Даже на последних драйверах Radeon Software Adrenalin для Windows10 (edition 20.1.4 от 27 января 2020 года) Cl Max Allocation остается на том же уровне.

При запуске бенчмарка на эпохе 352 и выше на четырехгиговых видеокартах AMD появляются ошибки типа:

not enough GPU memory to place DAG, you cannot mine this coin with this GPU

OpenCL error -61 - cannot allocate big buffer for DAG.

В Ubuntu на четырехгиговых видеокартах при запуске бенчмарка на эпохе 352 Claymore также отказывается работать. На восьмигиговых картах АМД бенчмарк не запускается с приближением к 380-й эпохе. Похожие результаты показывают и другие майнеры.

Как можно увеличить размер видеопамяти, доступной для OpenCL?

Размер сегмента (allocation size), выделяющегося на нужды многопотоковых вычислений теоретически можно увеличить в Windows командами:

setx GPU_MAX_ALLOC_PERCENT 100

setx GPU_MAX_HEAP_SIZE 100

setx GPU_FORCE_64BIT_PTR 1

setx GPU_USE_SYNC_OBJECTS 1

setx GPU_SINGLE_ALLOC_PERCENT 100

В Linux аналогичная операция делается в скрипте запуска командами:

export GPU_MAX_ALLOC_PERCENT 100

export GPU_MAX_HEAP_SIZE=100

export GPU_FORCE_64BIT_PTR 1

export GPU_USE_SYNC_OBJECTS 1

export GPU_SINGLE_ALLOC_PERCENT 100

Установка параметра GPU_FORCE_64BIT_PTR 1 должна включать 64-битную адресацию, что в теории расширяет размер доступной памяти, но на практике этого не происходит. Ограничения по доступной памяти для OpenCl не снимаются, и часть видеопамяти все равно остается неиспользованной (зарезервированной для воспроизведения видео). И в Линукс, и в Виндовс реальный объем доступной видеопамяти для вычислений OpenCL равен 50% для восьмигиговых и около 93% для четырехгиговых карт.

Включение/отключение режима компьютерных вычислений в драйверах ситуации также не улучшает, так эта операция только уменьшает сегментирование видеопамяти в драйверах AMD, из-за которого на больших DAG резко падает скорость майнинга. Размер доступной для параллельных вычислений памяти режим compute не изменяет.

Заключение

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

Причиной раннего отвала от майнинга на алгоритме Ethash АМД-шных карт является проблема с реализацией технологии OpenCL в части, которая касается работы с большими объемами видеопамяти.

Видеокарты АМД имеют проблемы как в Windows, так и в Linux, потому что у них максимальная доля памяти, выделяемой на параллельные вычисления меньше доступной видеопамяти. Из-за этого майнинг на алгоритме Ethash не запустится:

  • на GPU с 4 Гб памяти — на 350-й эпохе (июль 2020 года);
  • на GPU с 8 Gb — на 380-й эпохе (декабрь 2020 года).

Ранняя остановка видеокарт AMD при росте DAG будет связана с некачественными драйверами и частично с резервированием видеопамяти ОС под свои нужды (эта проблема рассматривалась в статье «О потреблении видеопамяти и майнинге на алгоритме Ethash в разных операционных системах»).

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

Видеокарты Nvidia не имеют проблем с отвалом от майнинга из-за ограничения максимального размера DAG. У них просто уменьшается хешрейт на поздних эпохах, что закономерно связано с увеличением объема обрабатывающихся данных. Зеленые видеокарты при наличии достаточной видеопамяти продолжат майнить эфир и его клоны и на поздних эпохах, только с меньшим хешрейтом. Учитывая массовый отвал 4-х гигабайтных карт, а также отвал восьмигиговых АМД в конце года, для Nvidia наступит рай в майнинге эфира и эфира классик.

P.S. Разработчики майнеров решили проблему с обработкой большого DAG в памяти видеокарт AMD путем его разбиения на части. Первым удачным майнером этого типа является программа с открытым исходным кодом ethminer версий выше 0.19.0-alpha (исключительно).

2 комментария

  • dr0ss

    I am far from thinking that AMD drivers are perfect, but the issue of not using more than 4096 megabytes of video card memory is not quite accurate.
    For example the mining of GRIN-C29M uses about 7G of video memory.
    Rather, the problem is not that OpenCL cannot use the memory needed, but with the developers of Eth mining software cannot find right way to communicate between their software and AMD drivers.
    (or there is another reason I am not aware of)
    Also, I don’t see anyone in the article doing tests with open source Linux drivers, not AMD ones, the result would be interesting 🙂

  • cryptoprofi

    amdgpudriver for Linux has same restrictions because it is using proprietary part of amdgpupro drivers for opencl. Unfortunately, there are no miners for Rocm drivers at the moment. I’m sure that this restriction will be lifted in few weeks in new drivers/miners.

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

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

English EN French FR German DE Russian RU Spanish ES