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

 

Поставил память в двухканальный режим, результат: вместо 29 ускорение в 39 раз.

2012.03.05 09:45:56     ParallelTester_00-01x (EURUSD,D1)       OpenCL init OK!
2012.03.05 09:45:57     ParallelTester_00-01x (EURUSD,D1)       GPU time = 1123 ms
2012.03.05 09:45:57     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 09:45:57     ParallelTester_00-01x (EURUSD,D1)       Result on Gpu МахResult==1.35098 at 174 pass
2012.03.05 09:46:41     ParallelTester_00-01x (EURUSD,D1)       CPU time = 43914 ms
2012.03.05 09:46:41     ParallelTester_00-01x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 09:46:41     ParallelTester_00-01x (EURUSD,D1)       Result on Cpu МахResult==1.35098 at 174 pass
2012.03.05 09:46:41     ParallelTester_00-01x (EURUSD,D1)       CpuTime/GpuTime = 39.10418521816563

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

Странно то что, при постановке двухканального режима CPU дал прирост 0,3%, зато GPU дал прирост 25%.

 
tol64:

А у меня что-то по нулям. Что это значит?  В этой строке:  Result on Gpu МахResult==0.0 at 0 pass

Может памяти не хватило, может надо чуть уменьшить CountBars или/и CountPass?
 
fyords:

Поставил память в двухканальный режим, результат: вместо 29 ускорение в 39 раз.

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

Странно то что, при постановке двухканального режима CPU дал прирост 0,3%, зато GPU дал прирост 25%.

Вообще то, ничего странного. В работе (не работа с графикой, а именно расчеты) с GPU бутылочным горлышком является оперативная память (мало провести расчеты на GPU, надо ещё забрать результаты с видеокарты в оперативную память). Оп.память стала работать быстрее - результаты на GPU улучшились.

В случае же с CPU то всё и так хранится в оп.памяти и нет необходимости гонять результаты туда/сюда.

Отсюда показательный вывод: хотите быстрые расчеты на GPU - устанавливайте быструю память.

 
Ну тогда все стало ясно, спасибо за разъяснения.
 
fyords:
Может памяти не хватило, может надо чуть уменьшить CountBars или/и CountPass?

Да, точно. Вот так получилось:

 

...что тоже радует. )) 

//---

Если добавить количество баров, то изображение при расчётах мигает и пропадает.

 
2012.03.05 12:40:51     Terminal        CPU: GenuineIntel Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz with OpenCL 1.1 (2 units, 2094 MHz, 2048 Mb, version 2.0)

Видеоадаптер    ATI Mobility Radeon HD 545v  (256 Мб)

2012.03.05 08:59:28     ParallelTester_00-01x (GBPUSDL,H1)      CpuTime/GpuTime = 19.70338983050847
2012.03.05 08:59:28     ParallelTester_00-01x (GBPUSDL,H1)      Result on Cpu МахResult==1.33921 at 366 pass
2012.03.05 08:59:28     ParallelTester_00-01x (GBPUSDL,H1)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 08:59:28     ParallelTester_00-01x (GBPUSDL,H1)      CPU time = 46500 ms
2012.03.05 08:58:41     ParallelTester_00-01x (GBPUSDL,H1)      Result on Gpu МахResult==1.33921 at 366 pass
2012.03.05 08:58:41     ParallelTester_00-01x (GBPUSDL,H1)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 08:58:41     ParallelTester_00-01x (GBPUSDL,H1)      GPU time = 2360 ms
2012.03.05 08:58:39     ParallelTester_00-01x (GBPUSDL,H1)      OpenCL init OK!
 

То есть вывод темы прост, как бы ни был быстр твой проц, для видяхи, он лишь поц :)

Всё равно видяха сделает проц минимум в 10 раз, на стареньких моделях видео и в 100 раз на новеньких.

2012.03.05 14:31:23     ParallelTester_00-01x (EURUSD,M15)      CpuTime/GpuTime = 364.5847953216374
2012.03.05 14:31:23     ParallelTester_00-01x (EURUSD,M15)      Result on Cpu МахResult==1.01643 at 577 pass
2012.03.05 14:31:23     ParallelTester_00-01x (EURUSD,M15)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 14:31:23     ParallelTester_00-01x (EURUSD,M15)      CPU time = 62344 ms
2012.03.05 14:30:21     ParallelTester_00-01x (EURUSD,M15)      Result on Gpu МахResult==1.01643 at 577 pass
2012.03.05 14:30:21     ParallelTester_00-01x (EURUSD,M15)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 14:30:21     ParallelTester_00-01x (EURUSD,M15)      GPU time = 171 ms
2012.03.05 14:30:21     ParallelTester_00-01x (EURUSD,M15)      OpenCL init OK!
CPU: Intel P4 3GHz, 2 kernel, RAM 3Gb, 32 bits
GPU: NVIDIA Corporation GeForce GT 430 with OpenCL 1.1 (2 units, 1400 MHz, 1023 Mb, version 295.73)

В моём случае из-за медленных ядер CPU ускорение в 364 раза.

 
Urain:

То есть вывод темы прост, как бы ни был быстр твой проц, для видяхи, он лишь поц :)

Всё равно видяха сделает проц минимум в 10 раз, на стареньких моделях видео и в 100 раз на новеньких.

В моём случае из-за медленных ядер CPU разница в 364 раза.

Уау! Это рекорд! )))

//--- 

Попробую позже последние драйвера поставить (295.73), может лучше немного станет. ))

 
Urain: Всё равно видяха сделает проц минимум в 10 раз, на стареньких моделях видео и в 100 раз на новеньких.

Интересно. У fyords карта сильнее (GeForce GT 440), а время расчета на порядок больше.

tol64: Уау! Это рекорд! )))

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

P.S. А будет ли у кого еще система без дискретной видюхи, как у меня?

 

2012.03.05 17:43:16 Terminal CPU: GenuineIntel  Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz with OpenCL 1.1 (4 units, 3092 MHz, 4008 Mb, version 2.0)

Mathemat:
 

...

P.S. А будет ли у кого еще система без дискретной видюхи, как у меня?

2012.03.05 17:43:16 Terminal CPU: GenuineIntel  Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz with OpenCL 1.1 (4 units, 3092 MHz, 4008 Mb, version 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.7347677666287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Result on Cpu МахResult==1.27347 at 1125 pass
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CPU time = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Result on Gpu МахResult==1.27347 at 1125 pass
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) GPU time = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK!
 

:(((

 Может, у меня "гранаты не той системы"? (В смысле версии SDK от AMD)