Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что-то у меня ничего не получается. Строка инициализации нормальная:
2012.04.01 05:52:01 Terminal CPU: GenuineIntel Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))
(ставил OpenCL 1.1 от AMD, а на него сверху 1.2). Но теперь запуск теста выдает
2012.04.01 06:06:49 ParallelTester_00-01x (EURUSD,H1) OpenCL not found.
Перед этим обновил Intel Graphics Driver на более новую версию, после чего снес AMD-шные драйвера ихней же инсталляхой, а потом снова ей все поставил.
И чего я теперь не так делаю?
P.S. А вот скоро Ivy будет, вот он-то и даст всем проср покажет, на что способен Интел в интегрированной графике, вместе со своей Intel HD 4000. Смотрите на графику.
И чего я теперь не так делаю?
И чего я теперь не так делаю?
В новом билде изменился параметр функции CLContextCreate, теперь вместо bool use_gpu используется int device.
при device>=0 используется как номер OpenCL устройства по порядку
при device==OPENCL_DEVICE_ANY (-1) используется автоматический выбор из всех имеющихся устройств
при device==OPENCL_DEVICE_GPU (-2) используется автоматический выбор из всех имеющихся GPU устройств
Покажите, пожалуйста, как это сделать в коде. Вызываю CLContextCreate( OPENCL_DEVICE_ANY ), при компиляции получаю результат:
'OPENCL_DEVICE_ANY' - undeclared identifier ParallelTester_00-01x.mq5 145 31
Билд 619.
И второй вопрос: где найти свежайшую справку?
P.S. Заработало, как только поставил аргумент -1. Константа OPENCL_DEVICE_ANY еще не объявлена :)
Но в последующих билдах это будут CL_USE_ANY/CL_USE_GPU_ONLY
Решил проверить, как OpenCL будет работать на i3-2120 (это не мой компутер, в системе нет дискретного видео). Поставил AMD APP SDK, OpenCL-Z все определил. В терминале при инициализации отобразилась строка:
2012.04.02 03:59:47 Terminal CPU: GenuineIntel Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)
Проверял на коде MetaDriver'a, приложенном к сообщению и чуть модифицированном с учетом последних изменений в билде 619 (см. первые тесты вот тут). Результат:
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43 ParallelTester_00-01x (EURUSD,H1) CPU time = 20483 ms
2012.04.02 04:00:22 ParallelTester_00-01x (EURUSD,H1) Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22 ParallelTester_00-01x (EURUSD,H1) Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22 ParallelTester_00-01x (EURUSD,H1) GPU time = 27628 ms
2012.04.02 03:59:55 ParallelTester_00-01x (EURUSD,H1) OpenCL init OK!
Во время выполнения на "GPU" все четыре потока процессора были заняты полностью, на 100%.
Что нужно сделать, чтобы добиться ускорения? На системе на основе Pentium G840 (тоже без дискретного видео) ускорение было в 25 раз:
P.S. Отправил сообщение в сервисдеск, но, боюсь, тут скорее мои проблемы... Кажется, уже научился корректно ставить и удалять AMD APP SDK с закрытыми глазами, но, похоже, не все подводные камни обошел. А Intel OpenCL Runtime хоть и ставится в систему, но в терминале по-прежнему камень не опознается как дивайс OpenCL.
P.P.S. Оказывается, вот еще чего откопал (https://www.mql5.com/ru/forum/6042/page25):
Ashes: 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)
Всё-таки GPU+OpenCL - это весчь!
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Result on Cpu МахResult==3.78654 at 50 pass
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Соunt inticators = 16; Count history bars = 50000; Count pass = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CPU time = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Result on Gpu МахResult==3.78654 at 50 pass
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Соunt inticators = 16; Count history bars = 50000; Count pass = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU time = 140 ms
Всё-таки GPU+OpenCL - это весчь!
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU time = 140 ms
Предлагаю делать тесты такими, чтобы время вычисления GPU не было таким маленьким. Во всяком случае, 140 ms, imho, слишком ненадежное значение, особенно при ошибках измерения GetTickCount() в десятки миллисекунд.
MD, это я тебе так завидую.
Предлагаю делать тесты такими, чтобы время вычисления GPU не было таким маленьким.
У меня терпения ждать CPU не хватит :) Тут чем дальше в лес - тем круче GPU...
Аналогично. :)
Но щас таки запущу на 4096 пчёл. Минут за пять ЦПУ сосчитает.