OpenCl и инструменты для него. Отзывы и впечатления. - страница 5

 
Mathemat:

Отлично, будет основа для сравнения MQL и С/С++. Я-то предоставил просто факты. И вообще, с какого это перепуга я должен быть Фомой верующим?

На нервосетках разница может быть немного больше, не спорю.

И, я бы хотел посмотреть на твои "просто факты", кстати.

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

 
joo: И, я бы хотел посмотреть на твои "просто факты", кстати.

Вот тут. Смотри мой второй пост на странице.

Ты, кстати, уже отвечал на мой пост со ссылкой. Код на С, который чуть выше, очень легко переделывается под MQL4. Смотри аттачмент.

Файлы:
pi.mq4  1 kb
 
Mathemat:

Вот тут. Смотри мой второй пост на странице.

Ты, кстати, уже отвечал на мой пост со ссылкой. Код на С, который чуть выше, очень легко переделывается под MQL4. Смотри аттачмент.

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

Ссылку на фотки этих чудищ выслал Вам в личку - чтобы не потворствовать цифровому ******низму у ПТУ-шников.

Да ладно, поверьте своей картинкой вы не измените их количество здесь даже на процент. Выкладывайте.

Вот только долго ли протянет? По-хорошему надо для такого рига монтировать хорошее охлаждение, водяное скажем, как дальше на картинке.

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

Да какая там таблица. Пара картинок.

1. Тесты программ parallelpi_x.cpp при разных настройках компиляции. При сравнении с MQL4 важен только 1-й результат: 6.723 секунды, там никаких ускорителей (SSE*, IPP, OML) нет.

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

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

2. Та же программа, переписанная на MQL4:


Результат: 22.98 секунд, т.е. в 3.4 раза больше. Но никакой работы с массивами там нет, а для нас это может быть существенно. В аттаче - код скрипта.

Файлы:
release.zip  278 kb
pi_1.mq4  1 kb
 
joo:

MQL5 быстрее MQL4 в 20 раз.

C++ быстрее MQL5 в 6 раз (при применении библиотек автоматического распараллеливания исполнения)

Итого: 20*6=120 раз.

Если применить вычисления на GPU, то будет ещё быстрее.

ИТОГО: 10/120=0.083c

где то так.

Итак, фанфары! На ринге 4 различных компилятора в состязании на умение... компилировать.

Ну, это шутка, конечно. А если серьёзно, то написаны 6 тестов. Результаты представлены ниже в таблице. А комментарии ещё нижее. :)

#Теста
Описалово
Имя исполняемого файла
Результат теста, с
1
Скрипт ех5 и библиотека ех5
1 MLP MQL compiler.ex5
97.2
2
Скрипт ех5 и библиотека dll С++, компилятор MS, все оптимизации отключены
2 MLP MS compiler nonOpt.ex5
42.6
3
Скрипт ех5 и библиотека dll С++, компилятор MS, все оптимизации включены
3 MLP MS compiler Opt.ex5
27.1
4
Скрипт ех5 и библиотека dll С++, компилятор Intel, все оптимизации включены
4 MLP Intel compiler.ex5
12.5
5
Скрипт ех4 и библиотека ех4
5 MLP MQL4 compiler.ex4
669.6
6
Скрипт ех4 и библиотека dll С++, компилятор Intel, все оптимизации включены
6 MLP MQL4 Intel compiler.ex4
10.7




В качестве тестовых тяжёлых вычислений используется нейронная 4-х слойная сеть MLP 80-100-100-10, оформленная в виде подключаемых библиотек ех4, ех5, и dll.

Видим, что:

- результаты работы подключенных ех5 либы и ех4 либы отличаются в 6,8 раза (1 и 5 тесты)

- результаты работы подключенных ех5 либы и dll либы Интеловского компилятора отличаются в 7,8 раза (1 и 4 тесты)

- результаты работы подключенных ех4 либы и dll либы Интеловского компилятора отличаются в 62,5 раза (5 и 6 тесты)

Выводы:

Конечно, насчет 20-ти кратной разницы MQL4 и MQL5 я немного загнул. Такая разница будет проявляться (я вспомнил, от куда эта цифра взялась у меня в голове) при интенсивном использовании 2-мерных массивов, но специально затачивать тесты под эту особенность что то мне лень (да и не будет соответствовать это типичным случаям "тяжёлых" вычислений - типичные случаи представлены в тестах), поэтому можете поверить мне на слово или написать тест самостоятельно. Поэтому можно говорить о разнице в скорости MQL4 и MQL5 в 6,8 раза и разнице MQL4 и С++ в 62,5 раза.

И, меня обескуражил такой факт, ахтунг! - скрипт MQL4 вызывающий dll работает быстрее, чем скрипт MQL5 с той же dll... Что бы это значило? - проверил, запускал несколько раз, ошибок нет. Вроде бы разработчики говорили, что в МТ5 оптимизирован вызов dll по сравнению с MT4. Либо это особенности билдов (MT5 574 и MT4 409) и тогда тесты не совсем корректны, либо... короче я не знаю.


Кому надо, может использовать сетку (скомпиленная dll из 4 или 6 тестов - очень шустрая сетка), исходники прилагаются. Количество нейронов в каждом слое настраивается. Правда, оптимизатор (и в 4-ке и в 5-ке) не поддерживает больше 64 параметров и к тому же шаг придется ставить большим, так что такого монстра (как в тестах, 80-100-100-10, 19210 оптимизируемых параметра!) обучать штатными средствами не получится, нужно юзать пользовательские алгоритмы оптимизации. Для этого дела (и не только для этого) задумал я, к слову, соорудить приблуду, платную конечно (будет в магазине), которая позволит штатным оптимизаторам (и 4-шным и 5-шным) оптить неограниченное количество параметров с любым шагом, даже с 0-вым.

Файлы:
tests_mlp.zip  71 kb
 

Убедительно, joo, даже очень. Но есть пара моментов.

Во-первых, при компиляции от MS даже лучший результат (вариант 3) лучше варианта 1 менее чем в 4 раза.

Во-вторых, что-то не верится, чтобы компилятор "все включено" от Intel был лучше MS более чем в 2 раза. Значит, у Intel ты включил больше оптимизаций.

В любом случае - впечатляет. Ждем заполнения таблицы до конца.

Теперь я знаю, зачем эти массивы из видеокарт: чтобы выполнять эти вычисления на каждом тике!

 
Mathemat:

Во-вторых, что-то не верится, чтобы компилятор "все включено" от Intel был лучше MS более чем в 2 раза. Значит, у Intel ты включил больше оптимизаций.

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

И, меня обескуражил такой факт, ахтунг! - скрипт MQL4 вызывающий dll работает быстрее, чем скрипт MQL5 с той же dll... Что бы это значило? - проверил, запускал несколько раз, ошибок нет. Вроде бы разработчики говорили, что в МТ5 оптимизирован вызов dll по сравнению с MT4. Либо это особенности билдов (MT5 574 и MT4 409) и тогда тесты не совсем корректны, либо... короче я не знаю.



Спасибо, очень показательно и наглядно.

Полагаю, не стоит так уж сильно сравнивать отдельные проценты : ведь скорость CPU (ну если брать в МегаГерцах MHz, или ГигаГерцах, GHz) подвисшего компьютера ... равна нулю.

При разнице в скорости порядка 10-20% имеет смысл больше заботиться о надёжности программы И её окружении, об обработке ошибок. Например, используя DLL сделанную в MSC, стоит обращать внимание на то, как она там на лету линкуется с MSVCRT.DLL, и какой версии, поскольку ей придётся работать в окружении непростого процесса terminal.exe и в окружении блока инициализации MSVCRT.DLL, который может отличаться от версии к версии, ну и так далее. Для нормальной обработки ошибок в DLL MetaTrader строит (и отслеживает) цепочку exceptions, что само по себе замедляет работу всей системы и вызова DLL и тому подобное.

По теме скорости нейронов:

вот тут человек перевёл на OpenCL нейросеть-библиотеку FANN и заявляет о 20-кратном ускорении на средней карте GTX 285:

"On my current GPU (GeForce 9500 GT), I'm getting roughly the same speed between the normal and OpenCL versions. I currently have a GTX 285 on order, and it should be at least 10x faster. With a modern GPU, such as the GTX 480, I expect it to be at least 20x faster than my 2.26GHz Nehalem Mac Pro. "

...

"Yep, the new card (GTX 285) runs the kernel about 20x faster."

http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0

http://leenissen.dk/fann/wp/

 

Ну почти все уже побывали конечно.

Для фанатичных четвёрочников не заглядывающих на mql5.com : OpenCL: внутренние тесты реализации в MQL5

Почти свершилось, однако.

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

Причина обращения: