Оцениваем ядра CPU для оптимизации

 

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

Что бы быть более объективным предлагаю использовать советник, работающий в режиме "Математические вычисления", это позволит минимум задействовать жесткий диск и память компьютера. По возможности указывайте название процессора, материнскую плату и частоту ОЗУ.

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

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

Сам же советник - это вырезка из реального советника, который я использую в подобной задаче для отбора листьев с дерева решений, т.е. реальная задача МО, и если есть идеи по ускорению кода, то с интересом выслушаю. В коде только 1000 листьев, в реальности их уже более 70 000, поэтому они вынесены в функцию для приемлемого времени ожидание исхода компиляции.

2019.08.09 23:04:26.397 Terminal        Windows 7 Service Pack 1 (build 7601) x64, IE 11, Intel Core i5  M 450 @ 2.40GHz, Memory: 2045 / 3766 Mb, Disk: 53 / 148 Gb, GMT+3
В журнале тестера стратегий через контекстное меню поставьте галку в пункте "Полный журнал оптимизации".
2019.08.09 22:41:25.630 Core 2  pass 2 returned result 1001000.00 in 0:04:50.391
2019.08.09 22:41:26.642 Core 1  pass 0 returned result 1001000.00 in 0:04:51.365
2019.08.09 22:46:09.036 Core 2  pass 3 returned result 1001000.00 in 0:04:43.441
2019.08.09 22:46:10.759 Core 1  pass 1 returned result 1001000.00 in 0:04:44.152
2019.08.09 22:46:10.759 Tester  optimization finished, total passes 4
2019.08.09 22:46:10.769 Statistics      optimization done in 9 minutes 36 seconds
2019.08.09 22:46:10.769 Statistics      shortest pass 0:04:43.441, longest pass 0:04:51.365, average pass 0:04:47.337

Добавлено: В данной ветке выяснилось, что размер файла в некоторых (это и надо выяснить) процессорах влияет на производительность системы в целом, хотя код структурно значительно не меняется. Поэтому прошу всех тестировать два советниика.

Пример настройки тестера - символ, период и тайм фрейм не важны - остальные настройки актуальны, на скрине другой советник, но настройки нужные


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

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



Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
Файлы:
 
Aleksey Vyazmikin:

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

Хорошая инициатива, поддерживаю.

При компиляции выдаёт предупреждение:

implicit conversion from 'number' to 'string'   Tree_Brut_TestPL.mq5    2567    16

Так и должно быть?

Строка:

   if(FrameAdd(Test_P,1,0,stat_values)==false)
 
Aleksey Vyazmikin:

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

Что бы быть более объективным предлагаю использовать советник, работающий в режиме "Математические вычисления", это позволит минимум задействовать жесткий диск и память компьютера. По возможности указывайте название процессора, материнскую плату и частоту ОЗУ.

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

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

Сам же советник - это вырезка из реального советника, который я использую в подобной задаче для отбора листьев с дерева решений, т.е. реальная задача МО, и если есть идеи по ускорению кода, то с интересом выслушаю. В коде только 1000 листьев, в реальности их уже более 70 000, поэтому они вынесены в функцию для приемлемого времени ожидание исхода компиляции.

За какой период проводить оптимизацию и на каком тайм фрейме? Инструмент важен?
 
Serhii Shevchuk:

Хорошая инициатива, поддерживаю.

При компиляции выдаёт предупреждение:

Так и должно быть?

Строка:

Поправил и перезалил!

Тестируйте.

 
Maxim Romanov:
За какой период проводить оптимизацию и на каком тайм фрейме? Инструмент важен?

В режиме "Математические вычисления" это не важно, тики там не генерируются!

 
А что там? Пенёк конца двухтысячных уже не взлетает? :D 
 
Artem Prischepa:
А что там? Пенёк конца двухтысячных уже не взлетает? :D 

Пробуйте свой процессор и скидывайте результаты - посмотрим, взлетает или только катится!

 

Старый конь борозды не портит?

железо

Результаты:

2019.08.09 23:22:07.472 Tester  set "Custom max" as optimization criterion for mathematical calculations
2019.08.09 23:22:07.540 Experts optimization frame expert Tree_Brut_TestPL (EURUSD.m,H1) processing started
2019.08.09 23:22:07.592 Tester  cache file 'tester\cache\Tree_Brut_TestPL.30.DFF2DB61B8A3751199D61AD0A0F226D3.opt' deleted
2019.08.09 23:22:07.623 Tester  Experts\Tree_Brut_TestPL.ex5 math calculations test means no history and no symbol info for EURUSD.m
2019.08.09 23:22:07.623 Tester  complete optimization started
2019.08.09 23:22:07.648 Core 1  agent process started on 127.0.0.1:3008
2019.08.09 23:22:07.650 Core 2  agent process started on 127.0.0.1:3009
2019.08.09 23:22:07.652 Core 3  agent process started on 127.0.0.1:3010
2019.08.09 23:22:07.654 Core 4  agent process started on 127.0.0.1:3011
2019.08.09 23:22:07.657 Core 5  agent process started on 127.0.0.1:3012
2019.08.09 23:22:07.659 Core 6  agent process started on 127.0.0.1:3013
2019.08.09 23:22:07.662 Core 7  agent process started on 127.0.0.1:3014
2019.08.09 23:22:07.664 Core 8  agent process started on 127.0.0.1:3015
2019.08.09 23:22:07.972 Core 1  connecting to 127.0.0.1:3008
2019.08.09 23:22:07.973 Core 1  connected
2019.08.09 23:22:07.983 Core 1  authorized (agent build 2097)
2019.08.09 23:22:07.997 Core 1  common synchronization completed
2019.08.09 23:22:08.035 Core 3  connecting to 127.0.0.1:3010
2019.08.09 23:22:08.036 Core 3  connected
2019.08.09 23:22:08.046 Core 3  authorized (agent build 2097)
2019.08.09 23:22:08.056 Core 2  connecting to 127.0.0.1:3009
2019.08.09 23:22:08.057 Core 2  connected
2019.08.09 23:22:08.059 Core 3  common synchronization completed
2019.08.09 23:22:08.067 Core 5  connecting to 127.0.0.1:3012
2019.08.09 23:22:08.068 Core 5  connected
2019.08.09 23:22:08.068 Core 2  authorized (agent build 2097)
2019.08.09 23:22:08.082 Core 2  common synchronization completed
2019.08.09 23:22:08.083 Core 5  authorized (agent build 2097)
2019.08.09 23:22:08.103 Core 7  connecting to 127.0.0.1:3014
2019.08.09 23:22:08.104 Core 7  connected
2019.08.09 23:22:08.119 Core 7  authorized (agent build 2097)
2019.08.09 23:22:08.125 Core 5  common synchronization completed
2019.08.09 23:22:08.140 Core 7  common synchronization completed
2019.08.09 23:22:08.150 Core 4  connecting to 127.0.0.1:3011
2019.08.09 23:22:08.151 Core 4  connected
2019.08.09 23:22:08.151 Core 8  connecting to 127.0.0.1:3015
2019.08.09 23:22:08.151 Core 8  connected
2019.08.09 23:22:08.162 Core 8  authorized (agent build 2097)
2019.08.09 23:22:08.164 Core 4  authorized (agent build 2097)
2019.08.09 23:22:08.184 Core 6  connecting to 127.0.0.1:3013
2019.08.09 23:22:08.185 Core 6  connected
2019.08.09 23:22:08.208 Core 6  authorized (agent build 2097)
2019.08.09 23:22:08.228 Core 4  common synchronization completed
2019.08.09 23:22:08.240 Core 6  common synchronization completed
2019.08.09 23:22:08.250 Core 8  common synchronization completed
2019.08.09 23:24:45.931 Tester  optimization finished, total passes 8
2019.08.09 23:24:45.941 Statistics      optimization done in 2 minutes 38 seconds
2019.08.09 23:24:45.941 Statistics      shortest pass 0:02:35.945, longest pass 0:02:37.669, average pass 0:02:37.006
2019.08.09 23:24:45.941 Statistics      8000 frames (3.14 Mb total, 412 bytes per frame) received
2019.08.09 23:24:45.941 Statistics      local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.09 23:24:45.988 Tester  8 new records saved to cache file 'tester\cache\Tree_Brut_TestPL.30.DFF2DB61B8A3751199D61AD0A0F226D3.opt'

Версия терминала:

2019.08.09 23:20:35.776 Terminal        MetaTrader 5 x64 build 2085 started (MetaQuotes Software Corp.)
2019.08.09 23:20:35.778 Terminal        Windows 10 (build 17763) x64, IE 11, UAC, AMD FX-8300 Eight-Core Processor , Memory: 17102 / 24574 Mb, Disk: 2407 / 2441 Gb, GMT+2
 
Serhii Shevchuk:

Старый конь борозды не портит?

Результаты:

Версия терминала:

Кажется, у Вас участвовало 8 агентов, а надо 4, так как FPU у FX только 4 и 8 ALU, а именно FPU грузятся при оптимизации. Почему так - не ясно - вопрос к разработчикам, ведь код в большей степени на сравнении построен, но видимо потребление вычислений с плавающей запятой превалирует или в разы медленней, поэтому и получается, что надо ставить именно число сопроцессоров, тогда 1 проход будет быстрей а среднее время примерно останется тем же.

 
Aleksey Vyazmikin:

Кажется, у Вас участвовало 8 агентов, а надо 4, так как FPU у FX только 4 и 8 APU, а именно FPU грузятся при оптимизации. Почему так - не ясно - вопрос к разработчикам, ведь код в большей степени на сравнении построен, но видимо потребление вычислений с плавающей запятой превалирует или в разы медленней, поэтому и получается, что надо ставить именно число сопроцессоров, тогда 1 проход будет быстрей а среднее время примерно останется тем же.

Уточните, пожалуйста. Я отключаю 4 агента и оптимизируемый параметр устанавливаю так, чтобы получилось 4 прохода оптимизации? или 8 проходов?
 
Serhii Shevchuk:
Уточните, пожалуйста. Я отключаю 4 агента и оптимизируемый параметр устанавливаю так, чтобы получилось 4 прохода оптимизации? или 8 проходов?

8 проходов 4 агента, типа аналог гипертрейдинга - по числу потоков.

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