Переключаем алгоритмы без проблем

Обновление от 07.03.2024 г.
Баг, указанный в обновлении от 23.09.2023 г. не проявляется, если в разгонах используется связка --lock_cclock --cclock, так что всё нормально.

Обновление от 23.09.2023 г.
Сообщаю, что в способе, показанном ниже, присутствует баг, описанный здесь:

Доброго времени, уважаемые форумчане.

В связи с очень серьёзным повышением сложности добычи KAS, дуал ERG + KAS уходит в прошлое и на первое место по доходности встают ERG + IRON, CFX + IRON, а так же сама CFX, в последнее время, подбирающаяся к NEXA.

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

Разберём ситуацию на примере.

Представим, что, в данный момент, на видеокарте RTX 3060 идёт майнинг NEXA майнером Rigel со следующими аргументами:
--cclock 350 --lock-cclock 1575 --lock-mclock 5000 --fan-control 60

Допустим, что в какой-то момент, по воле рынка, доходность CFX превысила доходность NEXA и возникла необходимость в переключении RTX 3060 на добычу CFX, которая майнится на Gminer с другими аргументами:
--cclock 200 --lock_cclock 1450 --mclock 1200 --fan 60

Что ж, отлично, приложение в автоматическом режиме добросовестно выключает Rigel, включает Gminer и… мы наблюдаем, что хешрейт резко ниже того, что должен быть.

Screenshot_11

Разберёмся, в чём проблема.
Внимательно смотрим на технические данные, предоставляемые в окне майнера, и видим, что видеокарта работает на частоте видеопамяти 5000 МГц.

Что произошло? Ведь майнеру был ясно указан аргумент --mclock 1200, что означает «сместить частоту видеопамяти на +1200 МГц». Видеопамять должна работать на частоте 8500 МГц (базовая частота памяти 7300 МГц плюс смещение 1200 МГц). И да, так бы оно всё и функционировало, если бы не Rigel, работавший перед этим.

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

Решение

Одним из решений может быть использование команд nvidia-smi или сброс через Афтобёрнер, но по мне, так это всё жутко неудобно, не всегда обеспечивает нужный результат и, главное, неавтоматизировано. Поэтому рассмотрим вариант решения с помощью всё тех же аргументов майнеров.

Используем данные разгонов и технические данные майнеров для анализа ситуации. Составим следующую таблицу, в которой под «первым» и «вторым» майнерами имеется в виду очерёдность запуска:

Наглядно видно, что одинаковые аргументы работают, как положено, а разные – нет.
Например, cclock был 350, стал 200, следовательно, второй майнер без проблем применяет свой аргумент, если такой аргумент уже был применён предыдущим майнером.
А вот с видеопамятью беда: аргумент mclock не может примениться из-за того, что аргументом lock-mclock, который Rigel после себя не сбросил, частота видеопамяти переведена в режим работы 5000 МГц. Видимо, в таком режиме смещение частоты не работает.

Решение, собственно, следует из таблицы. Нужно составлять разгоны таким образом, чтобы задействованы были ОДИНАКОВЫЕ аргументы у ВСЕХ майнеров, с которыми мы планируем работать.
Как-то это не очень понятно, поясним на нашем примере.

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

Мыслим логически. У Rigel не задействован аргумент mclock, поэтому ставим туда просто наименьшее значение, чтобы никак не повлиять на разгон, пусть это будет единичка. Почему единица, а не ноль? Потому что, у некоторых майнеров «ноль» используется, как символ игнорирования команды, а не как значение ноль, а нам не нужно, чтобы команда игнорировалась, а, наоборот, нужно, чтобы выполнялась.

У Gminer не задействован аргумент lock-mclock. Здесь мы не можем написать единицу, потому что тогда видеопамять перейдёт на самый низкий режим работы (кажется, это 405 МГц) и майнинг работать не будет. Запишем туда значение базовой частоты 7300, для того, чтобы вернуть режим работы видеопамяти с 5000 МГц на основной режим, при котором уже будет работать аргумент mclock.
Таким образом, разгоны приобретают следующий вид:

Rigel NEXA
--cclock 350 --lock-cclock 1575 --lock-mclock 5000 --mclock 1 --fan-control 60

Gminer CFX
--cclock 200 --lock_cclock 1450 --lock_mclock 7300 --mclock 1200 --fan 60

Разгоны стали, как бы, симметричными, только с разными конкретными значениями.
Теперь вбиваем всё это в приложение, запускаем и, о чудо, всё работает. :blush: :blush:

Screenshot_12

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

Спасибо за внимание, критические замечания приветствуются.

10 Likes

На всякий случай, команды для работы с nvidia-smi.
Команды выполняются из командной строки CMD, от имени администратора.
Так же можно использовать терминал PowerShell, от имени администратора.

Команды не работают для карт Nvidia GTX 1000 Series

Сброс всех частот:
nvidia-smi -rmc

Сброс частоты ядра:
nvidia-smi --reset-gpu-clocks

Сброс частоты памяти:
nvidia-smi --reset-memory-clocks

5 Likes

Пыхтят парочка 1080ти гиги на ригель рыба, есть догадки или аргументы для них? pl 95, cc 100, mc 0, fan 90… Заранее Вам спс :+1:
P.S. Я не так давно “слез с асиков” с ГПУ забыл или обленился настраивать.

Не имел дела с 1000-ой серией, не подскажу.

Для 1080Ti есть же аргументы для рыбы.

Чё то ты сильно зажал PL, у тебя она в овощ превратится! Убери весь разгон, посмотри сколько она даёт хэшей, а потом выставляй PL, где-то 120-150 минимум надо этим картам. А там уже на ядро по соточке накидывай, а память нужно сразу в минимальное значение (-1002 вроде так).

есть старинькая ферма 1660супер 1660ти 1066 1066 1066 майнят айрон фиш 240 ватт ригель но если выбрать другую монету допустим нексу потребление тоже остается 240 только хешрейт у 1660х по 10 мегахеш ,а если выбрать две манеты некса и айронфиш то ригель вообще незапускается. разгон такой что тут нетак? --lock-cclock 1470,1470,1480,1480,1480 --lock-mclock 750,810,700,700,400 --pl 125,125,150,150,150 --fan-control 65,65,65,65,69

–lock-mclock 750,810,700,700,400 у меня ниже 810 если опустить, то не запускается. Попробуй поставить все 810 ( --lock-mclock 810,810,810,810,810 ). Если запуститься потом от этого дальше будешь делать (например у меня --pl 80) . И некса и айронфиш обе работают на ядре (без ОЗУ) наверное не получиться…

чет неработает все 850 ставил нефига даж карты отключал по одной а на афтобернере все запускается две манеты но электричество жрет на 100 ватт больше

Проблема в картах и разгоне.

  1. Этот разгон не подходит для указанных видеокарт
  2. Видеокарты 1060 не поддерживают аргумент --lock-mclock
    Они поддерживают только --mclock – увеличение или уменьшение на определённое число MHz

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

–mclock для всех прописать? какие хоть частоты 810 для всех?

Для этих алгоритмов разгон памяти не нужен, то есть можете оставлять значение

--mclock 1

–lock-cclock 1470,1470,1480,1480,1480 --mclock 1 --pl 125,125,150,150,150 по отдельнасти все запускается две монеты одновременно нехотят

в одном окне майнера при запуске какаято ошибка неуспеваю прочитать

Я уже написал вам, почему две не хотят.

получается две монеты ток через афтобернер

Ну, там можно попробовать обойти эту проблему, если отредактировать файл бенчмарка.

мож кагда зилику запустят проблема сама собой уйдет

Да нет, я ж объясняю.
Вот у вас 5 карт, значит, аргументы у вас прописаны для пяти карт, так?
Отлично. Представим, что одна карта пытается майнить нексу, а четыре - рыбу, значит при этом запускается отдельно майнер для нексы, отдельно майнер для рыбы. Но аргументов-то как было, так и осталось для пяти карт, а реально в одном майнере работает ОДНА карта, а в другом ЧЕТЫРЕ. Ни то, ни другое не равно пяти, майнер не понимает, что ему делать - аргументов пять, а карт меньше, в итоге ошибка.