OpenCl y las herramientas para ello. Reseñas e impresiones.

 
Teniendo en cuenta el hecho de que Metaquotes ha cambiado su opinión respecto a la aplicabilidad de la GPU en el análisis y el trading (sería más exacto decir que el software para GPU ha alcanzado por fin el nivel necesario para introducirlo en los programas comerciales), sugiero que estamos preparados para empezar a probar OpenCL en la programación real hoy mismo.
En caso de que te hayas perdido esta noticia por estar chapurreando en el foro en lugar de operar, modelar y programar, aquí tienes lo que dice Metacquotes por ejemplo:

.............................................................................................................................................................................

Experiencias de GPU en modelización financiera

http://habrahabr.ru/blogs/hi/131983/

MetaQuotes 7 de noviembre de 2011, 19:27#

La compatibilidad con OpenCL se incluirá pronto en MQL5, y permitirá aumentar el rendimiento de los cálculos en una red distribuida en varias veces/orden de magnitud.

.............................................................................................................................................................................

Entonces, OpenCL, ¿qué es?

Es un enfoque de software, un programa intérprete para ejecutar su programa en paralelo en la tarjeta de vídeo, es decir, en la GPU.

¿Qué es lo que da?

En primer lugar, ofrece escalabilidad, es decir, un escalado fácil y barato de la potencia de procesamiento disponible. Una cosa es comprar, instalar y mantener una docena de servidores y otra muy distinta es comprar y conectar 3 o 4 tarjetas de vídeo adicionales. El resultado será el mismo en términos de velocidad, pero en términos de gasto de dinero y tiempo: docenas de veces.

En segundo lugar, permite utilizar métodos matemáticos tan sofisticados que antes eran inaccesibles debido a la debilidad de los ordenadores.

En tercer lugar, si las metacotizaciones pudieran atornillarse a OpenCL no sólo para los usuarios sino también para su probador incorporado, eso da lugar a dos perspectivas extrañamente opuestas:

(a) la mitad de las veces CloudNetwork no será necesaria para la optimización individual de asesores expertos simples.

(b) El uso de CloudNetwork abrirá unas perspectivas tan amplias para la optimización experta, la modelización y el análisis, la aplicación de métodos matemáticos tan complejos, que antes eran simplemente impensables.

¿Por dónde empezar?

Aquí hay un SDK de software (con controlador de CPU) para desarrolladores de AMD (se dice que es para Vista-Win7, pero funciona en WinXP también. Sin tarjeta aceleradora de vídeo funcionan con éxito en la CPU, y en cualquier procesador SSE de Intel, no sólo AMD):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx

Versiones antiguas del SDK de AMD-ATI (funciona en WinXP):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/pages/AMDAPPSDKDownloadArchive.aspx

La versión de Nvidia del programa de interpretación se suministra con cada controlador moderno y el entorno de desarrollo se incluye en el paquete CUDA Tools-SDK:

http://developer.nvidia.com/opencl

La versión de Intel del SDK (sólo funciona en Vista-Win7):

http://software.intel.com/en-us/articles/download-intel-opencl-sdk/

Nota: para que funcione correctamente con MetaTrader 4 o 5 necesitamos la versión 1.1 o superior de OpenCL, pero no la 1.0 porque sólo a partir de la versión 1.1 se habilita el soporte de threading seguro. En MetaTrader 4 o 5 los hilos se crean y destruyen dinámicamente y por separado para cada Asesor Experto. Por lo tanto, para utilizar la GPU de los Asesores Expertos que se ejecutan en diferentes pares de divisas, se necesita exactamente un hilo seguro.

En la práctica, esto significa utilizar sólo los controladores ATI Catalyst versión 10.10 y superior, o de Nvidia sólo la versión superior a 280.00. Los controladores de AMD-ATI mejoran y son más rápidos con cada versión, mientras que los de nVidia empeoran y son más lentos. La versión 1.1 de OpenCL de Nvidia es un 30-40% más lenta que su versión 1.0, es decir, es realmente 2 veces más lenta y nada más rápida que OpenCL 1.1 de AMD.

¿Cómo se comprueba la existencia de OpenCL?

AIDA by FinalWire muestra los parámetros de la GPU y la versión de OpenCL en la sección de pantalla.

¿Cómo puedo probar la velocidad de OpenCL?

LuxMark:

http://www.luxrender.net/wiki/LuxMark

Resultados comparativos aproximados para diferentes CPUs y GPUs:

http://www.luxrender.net/wiki/LuxMark_Results

A veces es necesario editar manualmente el archivo render.cfg para separarlo de la prueba CPU-Nativa-OpenCL.

La velocidad para la CPU Phenom II X6 de gama alta = alrededor de 2300, el mismo programa, pero sólo en el monstruo de 8pc Nvidia GTX580 da 70000, es decir, 30 veces más. Incluso un conjunto tan monstruoso de 8 GTX580 costará unas 30 veces menos en coste primario, y unas 40 veces menos en consumo de energía que un conjunto de 30 servidores equivalentes de doble punto flotante. Además, se necesita mucho esfuerzo para sincronizar instancias de programas en 30 servidores, mientras que en OpenCL todo se ejecuta en un solo ordenador con la misma instancia del programa.

Más resultados de LuxMark:

http://www.xtremesystems.org/forums/showthread.php?267385-LuxMark-The-OpenCL-CPU-amp-GPU-benchmark

Más software para probar OpenCL:

gpcbenchmarkocl

Ha sido retirado de la página web de los autores chinos (probablemente, se trata de un producto estratégico) pero puedes encontrarlo en la web. (Algunas partes de la sección de Procesamiento de Imágenes sólo funcionan con la versión 10 de DirectX y superior, lo que significa que no funciona con WinXP).

Hay otra peculiaridad de OpenCL: programar en ella requiere apartarse de las abstracciones matemáticas habituales utilizadas en la programación decente e implicarse en la optimización del programa para el hardware , lo que no es correcto.

Un artículo sobre OpenCL describe las dificultades aproximadas de su implementación:

http://habrahabr.ru/blogs/hi/125398/

Un curso de vídeo de introducción a OpenCL de AMD:

http://developer.amd.com/documentation/videos/OpenCLTechnicalOverviewVideoSeries/Pages/default.aspx

En general, CUALQUIER ordenador que ejecute SSE será lo suficientemente bueno para el desarrollo y la depuración de programas OpenCL siempre que se utilice el conjunto de programas de AMD. Además, se puede recomendar cualquier sistema GTS450....GTX580 de Nvidia, ya que también tiene CUDA, pero para el trabajo realmente rápido las tarjetas y los programas de AMD-ATI son más adecuados, ya que son más escalables y más estables en configuraciones multi-GPU.

El hardware OpenCL Multi-GPU es un tema de otro hilo.

 
AlexEro:

El hardware OpenCL Multi-GPU es un tema para otro hilo.

Por cierto, el tema se ha estudiado bastante y hay características comparativas de las tarjetas. Estudiado por los mineros de la famosa criptomoneda bitcoin (inicialmente) y de otras criptomonedas (posteriormente).

La comparación, por supuesto, en las tareas específicas, pero más o menos orientado en la configuración y el presupuesto es fácil.

Y sí, no vayas a por tarjetas gráficas potentes b\u ahora :)

 
TheXpert:

Por cierto, el tema se ha estudiado bastante y hay características comparativas de las tarjetas. Estudiado por los mineros de la famosa criptomoneda bitcoin (inicialmente) y de otras criptomonedas (posteriormente).

La comparación, por supuesto, en las tareas específicas, pero más o menos orientado en la configuración y el presupuesto es fácil.

Y sí, no te hagas con tarjetas de vídeo b\u potentes ahora :)

Simplemente, no quería asustar al lector con estos monstruos y distraerlo de lo más importante: la programación. Aunque estoy de acuerdo, debería mostrarse el resultado final, es decir, qué velocidad de escalado real puede esperarse y cómo se ve. La gama es amplia: desde cajas de cerveza hasta estanterías:


 

OpenCL es hoy el futuro.

Pregunta: ¿cuándo se implementará aproximadamente el soporte en MT5?

Estoy más que seguro de que OpenCL se convertirá en el estándar para la programación de cargas de trabajo paralelas.

 
Microsoft introdujo C++ AMP
Publicado por shapovalovts en Thu, 06/16/2011 - 10:07 am
En la Cumbre de Desarrolladores de AMD Fusion 11, Herb Sutter anunció una nueva tecnología para el desarrollo de aplicaciones C++ heterogéneas llamada C++ Accelerated Massive Parallelism (AMP). Esta tecnología, según declaran los desarrolladores de Microsoft, permitirá utilizar las capacidades de ejecución de código paralelo tanto en la CPU como en la GPU.

Los principales competidores de AMP serán OpenCL y CUDA. Sutter también destacó el potencial del uso de C++ AMP en la computación en nube.

https://www.mql5.com/ru/forum/132431

 
Así que vuelve a ser el hermano pequeño del AMP propietario).
 
Parece que AMP lo va a tener difícil. OpenCL ya está en pleno uso.
 
La falta de ideas es difícil de suplir con la potencia de cálculo para repasar o burbujear rápidamente el siguiente disparate derivado de la "perversión intelectual" sobre las comillas )))
 
artikul:
La falta de ideas es difícil de suplir con la potencia de cálculo para repasar o burbujear rápidamente el siguiente disparate derivado de la "perversión intelectual" sobre las comillas )))

Supongo que si se carga tal poder con ideas que valen la pena, se podría hacer que nuestro planeta girara alrededor del sol en sentido contrario. ))
 

articul, no hay que ser tan categórico. El mundo no se detiene. Las modernas tarjetas gráficas monstruosas, según tu lógica, también deberían ser reconocidas como consecuencia de la falta de ideas en el procesamiento de imágenes?

Yo mismo a veces me gusta acelerar, para no tener que esperar a la depuración del código para terminar los cálculos pesados, que están todos en mi init() (unos 10 segundos). Y todos los demás cálculos, que tienen lugar "sobre la marcha", se ejecutan realmente muy rápido, por lo que el multithreading no es necesario aquí.

 
artikul:
La falta de ideas es difícil de suplir con la potencia de cálculo para repasar o burbujear rápidamente el siguiente disparate derivado de la "perversión intelectual" sobre las comillas )))

Y aquí los camaradas están calentando activamente en previsión de participar en el 6º punto en una forma particularmente pervertida. =)