Есть ли ограничение потоков при оптимизации стратегии?

 
Всем привет! Я хочу оптимизировать свою стратегию и подбираю для этого сервер. Есть вариант взять сервер на 80 ядер и работать в 160 потоков. Подскажите пожалуйста, есть ли какие-то ограничения по
количеству одновременно работающих потоков?
 

Сам не проверял, но, по инфе на форуме, MT5 запускает агентов по числу физ.ядер, а не потоков.

Можно попытаться обойти, подняв две виртуалки и отдав по 80 "ядер" в каждую, но понятия не имею, сработает ли.

 
Наверно, нужно учитывать, что оптимизация будет отъедать и другие ресурсы, а не только ядра. В частности, на каждый агент должна загрузиться история (бары, тики, индикаторы, трейды и пр.), так что памяти потребуется в N раз больше, чем при одиночном проходе.
 
JRandomTrader #:

Сам не проверял, но, по инфе на форуме, MT5 запускает агентов по числу физ.ядер, а не потоков.

Можно попытаться обойти, подняв две виртуалки и отдав по 80 "ядер" в каждую, но понятия не имею, сработает ли.

Это если мы создаем агентов тестирования, которые будут доступны по локальной сети и использоваться будут не с этого компьютера. Если же мы запускаем оптимизацию в терминале, запущенном на компьютере с 80 физическими, но 160 логическими ядрами, то все 160 будут доступны. Однако, не уверен, что это позволит повысить скорость оптимизации в два раза по сравнению с использованием 80 агентов. Просто каждые два логических ядра будут делить время одного физического. 

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

 
Stanislav Korotky #:
Наверно, нужно учитывать, что оптимизация будет отъедать и другие ресурсы, а не только ядра. В частности, на каждый агент должна загрузиться история (бары, тики, индикаторы, трейды и пр.), так что памяти потребуется в N раз больше, чем при одиночном проходе.

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

если робот на открытии бара работает, то OHLC не так сильно потребляет RAM и к тому же быстрее, а если пробойная каждый тик ловит, то там беда будет с 80 ядрами, а если еще и мультисимвол, то и 1тб может быть мало)

тут как раз HT и полезно отключать, память экономить, разницы в скорости вроде нет, на коротком тесте, что HT, что без почти одинаково по времени
 
Yuriy Bykov #:

Это если мы создаем агентов тестирования, которые будут доступны по локальной сети и использоваться будут не с этого компьютера. Если же мы запускаем оптимизацию в терминале, запущенном на компьютере с 80 физическими, но 160 логическими ядрами, то все 160 будут доступны. Однако, не уверен, что это позволит повысить скорость оптимизации в два раза по сравнению с использованием 80 агентов. Просто каждые два логических ядра будут делить время одного физического. 

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

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

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

 
Georgiy Merts #:

По моим замерам ...  

Спасибо, это полезная информация

 
Yuriy Bykov #:

Спасибо, это полезная информация

пока тут еще никто не сделал тест, невероятная лень в этом плане напала, перезагрузиться, скинуть на дефолт и проверить, у меня 6800с32 2х32гб

разработчики могли  и сами рекомендацию дать, кроме той - чем быстрее тем лучше

не понятно, важна задержка или пропускная способность

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

 
Ivan Verbitskiy:
Всем привет! Я хочу оптимизировать свою стратегию и подбираю для этого сервер. Есть вариант взять сервер на 80 ядер и работать в 160 потоков. Подскажите пожалуйста, есть ли какие-то ограничения по
количеству одновременно работающих потоков?

Если будет не хватать оперативки или места на диске, то работать будут не все потоки. А так я запускал на 336 потоках на маленьком временном огрызке на всех тиках работают все. Сейчас запускал на 6 лет на всех тиках на 5 минутах 112 потоков и не так много параметров для оптимизации и кушало примерно 100 гб. оперативки и 80-120 гб. жесткого диска. При этом на оперативку и место на жестком диске был еще запас и работали все потоки. А так на всех тиках за год оптимизации мне хватало 192 гб. оперативы на 336 потоках. Оптимизация по быстрому генетическому алгоритму

 
Ivan Verbitskiy:
Всем привет! Я хочу оптимизировать свою стратегию и подбираю для этого сервер. Есть вариант взять сервер на 80 ядер и работать в 160 потоков. Подскажите пожалуйста, есть ли какие-то ограничения по
количеству одновременно работающих потоков?

Если оптимизатор запускается нативно на самом сервере - будут доступны все ядра в режиме гипертрейдинга. Если вы запускаете в режиме агентов и будете подключаться извне - гипертрейдинг доступен не будет. Так же, следует учесть, что работа с памятью у MT5 крайне не эффективна и потребует 1 - 1.5 Gb+ на один поток. По этому, скорее всего, упор пойдет в количество памяти а не в потоки. Так же, эффективность гипертрейдинга зависит непосредственно от самого кода советника. Если один советник и так забивает все свободные порты (в случае с Intel) или блоки для целых/вещественных типов (в случае с AMD) или же вызывает частые промахи кеша - эффект от гипертрейдинга будет минимален (или вообще не будет). 

 
Многопоточность - это предсказание ветвлений одновременно на двух конвеерах, типа угадывания. На одном конвеере тоже предсказание ветвлений. Это типа как большая торговая компания, которая расщитывает ассортимент и заказы из истории и данных и пытается предсказать закупки, чтобы взять оптом. Но потом предпочтение покупателей изменились и все закупки зря и два офиса не оправдали себя так и с двумя конвеерами. Если один конвеер ошибся, то придется стереть и общий кеш и всё заново. 
Причина обращения: