OpenCL: внутренние тесты реализации в MQL5 - страница 21

 
Urain:

Ага, я кажется понял, тебя не устраивает

1.  усложнение алгоритмов и перерасход памяти от применения

2.  и ты хочешь иметь возможность смещения ещё на этапе копирования.

ЗЫ Чтоб не нужно было копировать 100000 элементов а потом делать 998000 смещение.

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

1.  Не. Не устраивает потеря времени на лишнее копирование. Хотя в случае использования float копировать в промежуток всё равно придётся.

2. Да.

3. Да.

 
Первые блинчики:  https://www.mql5.com/ru/forum/138292/page7#601897
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
  • www.mql5.com
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
 
MetaDriver:

Первые блинчики:  https://www.mql5.com/ru/forum/138292/page7#601897

Класс. Впечатляет. Вкусные блинчики.

//---

А будет ли статья про OpenCL? Я пока не подобрался к этой теме на практике, но почитать на перспективу было бы уже очень интересно. Или хотя бы в справке пару примеров-скриптов, как использовать. Не хватает информации. 

 

Мне на моей карточке удалось получить х200-кратную прибавку в скорости по сравнению с одним ядром ЦПУ.

2012.03.04 23:01:32 ParallelTester_00-01x (EURUSD,D1)  CpuTime/GpuTime = 216.0292397660819
2012.03.04 23:01:32 ParallelTester_00-01x (EURUSD,D1)  Result on Cpu МахResult==1.3431 at 819 pass
2012.03.04 23:01:32 ParallelTester_00-01x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:01:32 ParallelTester_00-01x (EURUSD,D1)  CPU time = 36941 ms
2012.03.04 23:00:55 ParallelTester_00-01x (EURUSD,D1)  Result on Gpu МахResult==1.3431 at 819 pass
2012.03.04 23:00:55 ParallelTester_00-01x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:00:55 ParallelTester_00-01x (EURUSD,D1)  GPU time = 171 ms
2012.03.04 23:00:55 ParallelTester_00-01x (EURUSD,D1)  OpenCL init OK!

Прошу тестить и выкладывать результы. 

CPU: AuthenticAMD AMD Phenom(tm) II X6 1100T Processor with OpenCL 1.1 (6 units, 3311 MHz, 16345 Mb, version 2.0)
GPU: Advanced Micro Devices, Inc. Cayman with OpenCL 1.1 (20 units, 750 MHz, 1024 Mb, version CAL 1.4.1664 (VM))

Если карточка не тянет по памяти - уменьшать историю (CountBars) или количество pass'ов (CountPass), что менее желательно

Прога (модель многоканального тестера) в прицепе

Файлы:
 
2012.03.04 22:24:07     ParallelTester_00-01x (EURUSD,D1)       OpenCL init OK!
2012.03.04 22:24:08     ParallelTester_00-01x (EURUSD,D1)       GPU time = 1513 ms
2012.03.04 22:24:08     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:08     ParallelTester_00-01x (EURUSD,D1)       Result on Gpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01x (EURUSD,D1)       CPU time = 44055 ms
2012.03.04 22:24:52     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:52     ParallelTester_00-01x (EURUSD,D1)       Result on Cpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01x (EURUSD,D1)       CpuTime/GpuTime = 29.11764705882353
2012.03.04 22:27:16     Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)
2012.03.04 22:27:16     Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2812 MHz, 2048 Mb, version 2.0)
Даже на моем, не ахти железе, прирост виден. Полезный тест. Спасибо.
 

Мой результат, ускорение в 133 раза:

2012.03.04 23:23:30     ParallelTester_00-01x (EURUSD,D1)       CpuTime/GpuTime = 133.8285714285714
2012.03.04 23:23:30     ParallelTester_00-01x (EURUSD,D1)       Result on Cpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:30     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:30     ParallelTester_00-01x (EURUSD,D1)       CPU time = 18736 ms
2012.03.04 23:23:11     ParallelTester_00-01x (EURUSD,D1)       Result on Gpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:11     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:11     ParallelTester_00-01x (EURUSD,D1)       GPU time = 140 ms
2012.03.04 23:23:11     ParallelTester_00-01x (EURUSD,D1)       OpenCL init OK!
2012.03.04 23:21:47     Terminal        CPU: GenuineIntel  Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz with OpenCL 1.1 (8 units, 3392 MHz, 16366 Mb, version 2.0)
2012.03.04 23:21:47     Terminal        GPU: Advanced Micro Devices, Inc. Barts with OpenCL 1.1 (14 units, 900 MHz, 1024 Mb, version CAL 1.4.1664 (VM))
 
Удивительно, что на одном ядре i7 работает в 2 раза быстрее X6 1100Т - при сравнимых частотах (у i7 - в районе 3.8 GHz, у 1100T - 3.7). Понятно, что это такие вычисления, но разница в скорости CPU на малопоточке чудовищна.
 
Mathemat:
Удивительно, что на одном ядре i7 работает в 2 раза быстрее X6 1100Т - при сравнимых частотах (у i7 - в районе 3.8 GHz, у 1100T - 3.7). Понятно, что это такие вычисления, но разница в скорости CPU на малопоточке чудовищна.

Много думал, читал гугл.

Чесал репу.

Или они там самый продвинутый  mql-компилер-оптимайзер  зажали для себя и нам не дают, или я уже не знаю.

Так не бывает. "Не верю!" (с) КСС

А скорее всего у них кодогенератор оптимизированный под Intel.  AMD-дискриминация.

По любому безобразие!  Я буду жаловаться в ООН.

 
младший интел)
2012.03.05 02:03:33     ParallelTester_00-01x (EURUSD,D1)       OpenCL init OK!
2012.03.05 02:03:33     ParallelTester_00-01x (EURUSD,D1)       GPU time = 234 ms
2012.03.05 02:03:33     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:03:33     ParallelTester_00-01x (EURUSD,D1)       Result on Gpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01x (EURUSD,D1)       CPU time = 27471 ms
2012.03.05 02:04:01     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:04:01     ParallelTester_00-01x (EURUSD,D1)       Result on Cpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01x (EURUSD,D1)       CpuTime/GpuTime = 117.3974358974359
2012.03.05 01:54:17     Terminal        GPU: NVIDIA Corporation GeForce GT 520 with OpenCL 1.1 (1 units, 1620 MHz, 512 Mb, version 285.62)

о CPU почему-то ни строчки ни нашёл в логах.

Intel Celeron G530 2.4GHz

 

А вот тут я что-то не понял:

у меня GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)  GPU time = 1513 ms

у Swan GeForce GT 520 with OpenCL 1.1 (1 units, 1620 MHz, 512 Mb, version 285.62)  GPU time = 234 ms

это как такое возможно? 

Тут GeForce GT 440 и тут GeForce GT 520 сравнил характеристики, моя по всем параметрам больше, а время выполнения в 6,5 раз больше.

NVIDIA GeForce GT 440 | NVIDIA
NVIDIA GeForce GT 440 | NVIDIA
  • www.nvidia.ru
Установи GeForce в свой ПК для максимальной производительности и разгони свою цифровую жизнь. Смотри потоковые HD фильмы и выводи фотографии высокого разрешения без задержек. Создай дома 3D кинотеатр с помощью Blu-Ray 3D™ и NVIDIA® GeForce®. Разгони свои любимые приложения и раздвинь границы возможностей интернет с новым поколением браузеров с...
Причина обращения: