OpenCL: pruebas de implementación interna en MQL5 - página 21

 
Urain:

Sí, creo que lo entiendo, no estás satisfecho con

1. la complicación de los algoritmos y los excesos de memoria por el uso

2. y quiere poder compensar en la fase de copia.

Así que no tienes que copiar 100000 elementos y luego hacer 998000 desplazamientos.

3. Pero deberíamos dejar la variante con offset, que tenemos ahora, porque nos permite no copiar un mismo dato muchas veces, sino tomarlos para una nueva tarea desde un buffer CL ya existente con un nuevo offset.

1. no. No me gusta perder el tiempo con copias adicionales. Aunque, si usamos float, tendremos que copiar en el hueco de todos modos.

2. Sí.

3. Sí.

 
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
  • www.mql5.com
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
 

Muy bien. Impresionante. Deliciosos panqueques.

//---

¿Habrá un artículo sobre OpenCL? Todavía no me he acercado a este tema en la práctica, pero sería muy interesante leerlo en perspectiva. O al menos un par de scripts de ejemplo en la ayuda sobre cómo utilizarlo. No hay suficiente información para todos.

 

He conseguido un aumento de velocidad de x200x en mi tarjeta en comparación con un solo núcleo de la CPU.

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

Por favor, haz la prueba y publica los resultados.

CPU: AuthenticAMD AMD Phenom(tm) II X6 1100 T 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))

Si la tarjeta no está tirando de la memoria, reduzca el historial (CountBars) o el número de pasadas (CountPass) que es menos deseable.

Remolque de probador multicanal

Archivos adjuntos:
 
2012.03.04 22:24:07     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 1513 ms
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 44055 ms
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (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)
Incluso en mi hardware no tan bueno, la ganancia es visible. Prueba útil. Gracias.
 

Mi resultado, una aceleración de 133 veces:

2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 133.8285714285714
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 18736 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 140 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 23:21:47     Terminal        CPU: GenuineIntel  Intel(R) Core(TM) i7-2600 CPU @ 3.40 GHz 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))
 
Sorprendentemente, en un solo núcleo, el i7 es el doble de rápido que el X6 1100T, a frecuencias comparables (el i7 ronda los 3,8 GHz, el 1100T los 3,7). Es comprensible que se trate de esos cálculos, pero la diferencia de velocidad de la CPU en un hilo bajo es monstruosa.
 
Mathemat:
Es sorprendente que en un solo núcleo el i7 funcione 2 veces más rápido que el X6 1100T, a frecuencias comparables (el i7 ronda los 3,8 GHz, el 1100T los 3,7). Es comprensible que se trate de este tipo de computación, pero la diferencia de velocidad de la CPU en hilos bajos es monstruosa.

Pensando mucho, leyendo en Google.

Me he estado rascando la cabeza.

O tienen el mql-compilador-optimizador más avanzado cogido con pinzas para ellos y no nos lo dan, o ya no sé.

No funciona así. "¡No lo puedo creer!" (c) KSS.

Y lo más probable es que tengan un codogenerador optimizado para Intel.

De todas formas es una barbaridad. Me quejaré a la ONU.

 
junior Intel)
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 234 ms
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 27471 ms
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (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)

Por alguna razón no pude encontrar una línea sobre la CPU en los registros.

Intel Celeron G530 2.4GHz

 

Aquí es donde no lo entiendo:

Tengo una GeForce GT 440 con OpenCL 1.1 (2 unidades, 1660 MHz, 1024 Mb, versión 295.73) Tiempo de GPU = 1513 ms

Tengo una GeForce GT 520 con OpenCL 1.1 (1 unidades, 1620 MHz, 512 Mb, versión 285.62) Tiempo de GPU = 234 ms

¿Cómo es posible?

Aquí GeForce GT 440 y aquí GeForce GT 520 especificaciones comparadas, la mía es por todos los parámetros más, pero el tiempo de ejecución es 6,5 veces más.

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