Многопоточность в МТ5 - страница 3

 

Эффекта не наблюдается пока. 

Windows 7, 32р,  Intel Q9505 + ATI Radeon HD 5770

 

 

С разрешения автора публикую последнюю версию скрипта и результаты тестов на своем железе.

 

 

 

Из приведенных выше результатов можно сделать вывод насколько медленно работает MQL5. 

Прошу протестировать и разместить в этой ветке результаты тестов. 

Файлы:
 
Graff:

Из приведенных выше результатов можно сделать вывод насколько медленно работает MQL5. 

Приведите результаты прогона на CUDA с 1 потоком, пожалуйста.


В выражениях "насколько медленно" в рамках графических ускорителей надо всегда добавлять "в исключительных случаях простейших массово параллелящихся вычислений". К сожалению, никакого универсального алгоритма в существующих реализациях CUDA/OpenCL/etc нельзя реализовать так, чтобы он обгонял CPU.

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

 
Renat:
Приведите результаты прогона на CUDA с 1 потоком, пожалуйста.

 

 

С 1м потоком медленнее, но всеравно быстрее всех 

 
Graff:

С 1м потоком медленнее, но всеравно быстрее всех 

Судя по результатам 109 ms при 512 потоках и 1201 ms при 1 потоке, зависимость ускорения от количества потоков нелинейная и есть большая зависимость от системного оверхеда. 

Если посчитать как 1201 / 512, то при 512 потоках результат должен быть через 2 ms, или если по другому, 109 * 512 = 55 808 ms за 1 проход.

Почему такие расхождения?


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

Это поможет для сравнения.

 
Renat:

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

Это поможет для сравнения.

У меня исходников нет, мне JavaDev отправил только ex5 файл, который я выложил.
 
Graff:
У меня исходников нет, мне JavaDev отправил только ex5 файл, который я выложил.

Тогда ждем исходники одного и того же самого главного цикла/функции расчета.

Без этого сравнения некорректные.

 
Renat:

Судя по результатам 109 при 512 потоках и 1201 при 1 потоке, зависимость ускорения от количества потоков нелинейная и есть большая зависимость от системного оверхеда. 

Если посчитать как 1201 / 512, то при 512 потоках результат должен быть через 2 ms, или если по другому, 109 * 512 = 55 808.

Почему такие расхождения?

По словам автора расхождения из-за работы кеша. На 16 и 32 потоках проходит примерно за 250.
 
Graff:

Из приведенных выше результатов можно сделать вывод насколько медленно работает MQL5. 

Нет, вывод неправильный. MQL5 достаточно быстр, для однопоточных задач.

А результаты тестов показывают, насколько решение задачи может быть ускоренно, если она (задача) поддается распараллеливанию.


 
joo:

Нет, вывод неправильный. MQL5 достаточно быстр, для однопоточных задач.

А результаты тестов показывают, насколько решение задачи может быть ускоренно, если она (задача) поддается распараллеливанию.


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