Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - страница 7

 
Mathemat:
Ага, похвалиться расчетами на GPGPU решил. И как - есть ускорение?

Откуда на емашке ускорение? На копирование в буфер жпу времени больше уходит чем на расчёт.

Это так, проба топора. Ускорение будет, когда расчёт относительно тяжёлый.

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

 

И ваще, я не хвастаюсь, а популяризую OpenCL. Вот! :)

К тому же прикольно.

 
Mathemat:

И как - есть ускорение?

Вот от йаззььь!!

2012.03.02 01:15:10     Tester-512_Test_001 (EURUSD,M1) СPU time = 7223 ms
2012.03.02 01:15:10     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.01871 at 49 pass
2012.03.02 01:15:03     Tester-512_Test_001 (EURUSD,M1) GPU time = 312 ms
2012.03.02 01:15:03     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.01871 at 49 pass
2012.03.02 01:15:02     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

Результат одинаковый (проверка на правильность), а время сильно разное. В данном случае в 23 раза различие. Вобчем - оно того стоило.

Прогонял однослойный перцептрон по истории 144000 баров, 512 пассов в один проход. Мне понравилось.. ;)

 
MetaDriver: В данном случае в 23 раза различие. Вобчем - оно того стоило.
Здорово-то как!
 
Mathemat:
Здорово-то как!

Как выяснилось типичное время ещё чуть лучше. Вот глянь повторы:

2012.03.02 01:26:59     Tester-512_Test_001 (EURUSD,M1) СPU time = 7238 ms
2012.03.02 01:26:59     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.80004 at 320 pass
2012.03.02 01:26:51     Tester-512_Test_001 (EURUSD,M1) GPU time = 281 ms
2012.03.02 01:26:51     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.80004 at 320 pass
2012.03.02 01:26:51     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!
2012.03.02 01:26:48     Tester-512_Test_001 (EURUSD,M1) СPU time = 7270 ms
2012.03.02 01:26:48     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.48404 at 207 pass
2012.03.02 01:26:41     Tester-512_Test_001 (EURUSD,M1) GPU time = 281 ms
2012.03.02 01:26:41     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.48404 at 207 pass
2012.03.02 01:26:41     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

В 25 с лишним раз. Даже очень ага. :)

Это был 8-ми входовый нейрон. А теперь зацени 16-ти входовый:

2012.03.02 01:32:32     Tester-512_Test_001 (EURUSD,M1) СPU time = 14618 ms
2012.03.02 01:32:32     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.22936 at 78 pass
2012.03.02 01:32:18     Tester-512_Test_001 (EURUSD,M1) GPU time = 327 ms
2012.03.02 01:32:18     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.22936 at 78 pass
2012.03.02 01:32:17     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!
2012.03.02 01:32:01     Tester-512_Test_001 (EURUSD,M1) СPU time = 14618 ms
2012.03.02 01:32:01     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.21085 at 143 pass
2012.03.02 01:31:46     Tester-512_Test_001 (EURUSD,M1) GPU time = 327 ms
2012.03.02 01:31:46     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.21085 at 143 pass
2012.03.02 01:31:46     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

Разница уже в 45 раз.

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

 

А это 1024 прохода параллельно:

2012.03.02 01:45:04     Tester-512_Test_001 (EURUSD,M1) СPU time = 29282 ms
2012.03.02 01:45:04     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==0.73802 at 802 pass
2012.03.02 01:44:35     Tester-512_Test_001 (EURUSD,M1) GPU time = 327 ms
2012.03.02 01:44:35     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==0.73802 at 802 pass
2012.03.02 01:46:36     Tester-512_Test_001 (EURUSD,M1) СPU time = 29265 ms
2012.03.02 01:46:36     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.58618 at 821 pass
2012.03.02 01:46:06     Tester-512_Test_001 (EURUSD,M1) GPU time = 328 ms
2012.03.02 01:46:06     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.58618 at 821 pass
2012.03.02 01:46:06     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

Обрати внимание - на GPU разницы вообще никакой (там 1280 ядер, то бишь вся задачка умещается в один проход).

Проверка на ЦПУ, естественно, делается последовательно.

Итак, искомый стольник практически достигнут : разница в 89.5474 раза (!)

 

Да, тяжелые расчеты внутри цикла - самое лучшее для OpenCL.

А у тебя или знакомого не завалялся ли компутер на основе А8-3850? У него 400 графических конвееров (интегрированных), между прочим!

 
Mathemat:

А у тебя или знакомого не завалялся ли компутер на основе А8-3850? У него 400 графических конвееров (интегрированных), между прочим!

Ничего не путаешь? Вот нашёл http://kazan.kompiko.info/priceshop.php?desc_id=111255

Вроде ничего особенного, четыре ядра всего-то, про конвеер ни гу-гу.

 

А ты почитай вот тут, в описании камня. Сильно сумлеваюсь, что этот камешек (точнее, его GPU часть) не поддерживает OpenCL.

С точки зрения CPU камень звезд с неба не хватает. Но вот интегридео у него знатное, и в "хороших" случаях на ускорение в десятки раз можно вполне рассчитывать, не ставля никаких дискретных видеомонстров. Чем не экономичный суперкомпутер, а?

А "пятера" - она вот такая и выходит, что моща многоядреного камня вроде бы и ни к чему почти. Не считая, конечно, оптимизации - да и то условно: какая тебе разница, сколько у тебя ядер, 4 или 6, если оптимизация должна идти сутками? Если уж на то пошло - запускай Cloud хоть на не самом быстром честном двухъядернике Celeron G530...

P.S. Я не фэн AMD, если что. Я просто пытаюсь просчитать, к чему вся эта бодяга AMD в конечном счете приведет.

 

Володь, запусти, пожалуйста, вот этот скрипт и доложи результаты.

Спасибо MQL5 за помощь.

Файлы:
Причина обращения: