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

 
Renat:
Hay aclaraciones:
...
2) Apoyamos OpenCL 1.1 y superior porque soporta tipos dobles. Laversión OpenCL 1.0 sólo puede operar con float, cuya precisión no es en absoluto adecuada para los cálculos financieros

Intenta instalar controladores más nuevos, aunque muchas tarjetas de generaciones anteriores no admiten operaciones dobles.
Espero que 1.1 float siga soportando float también. En general float no es suficiente pero en muchos casos particulares es muy suficiente. Y la memoria adicional suele ser cara, sobre todo para los cálculos paralelos.
 
Graff:
Mientras probábamos los scripts deJavaDev este verano, nos encontramos con elproblema de que mi tarjeta gráfica no soportabael doble, perofuncionabaconel float. Los controladores no pueden arreglarlo, hay que cambiar la tarjeta :(
Se utilizarán todos los núcleos del procesador si la tarjeta gráfica no es compatible.
 

Poner el Centro Catalizador 12, antes era el 11. Ya tengo resultados (resaltados en rojo):

Sólo "jugué" con la lista desplegable "0" a "1" y el icono de ATI apareció. No ha vuelto a desaparecer al iniciar el programa. Un pequeño fallo en el software parece ser....

 
WChas:
¡Genial! Tengo MSI R6970 - 1536 hilos (agentes) y Gigabyte HD5870 (1600 procesadores). En el gestor de BOINC se pueden utilizar sin combinarlas en crossfair (basta con conectar una salida de la segunda tarjeta o conectar una de las salidas del segundo monitor. Pregunta: ¿será posible utilizar ambos sin fuego cruzado?

Todavía no estoy seguro. Depende más del propio programa que selecciona los dispositivos, lo que implica utilizar cada tarjeta en el código de forma explícita.

Lo veremos más adelante, cuando lancemos la primera beta.

 
MetaDriver:
Espero que el flotador 1.1 siga siendo compatible también? El flotador no es suficiente en el caso general, pero en muchos casos especiales es incluso muy suficiente. Y la memoria adicional suele ser muy cara, especialmente en los cálculos paralelos.
En OpenCL 1.1, se admite, por supuesto, float.
 
WChas:
Si he entendido bien, ¿1 GPU es un agente muy potente? En ese caso, ¿se podrían desactivar los agentes de la CPU (debido a su baja velocidad en relación con el vídeo)?

El núcleo de la CPU no puede ser desactivado de ninguna manera, se utiliza como una plataforma de acogida en el entorno MQL5 de todos modos.

Es importante entender que los núcleos de la GPU son "un enjambre de abejas altamente especializadas" en comparación con los "caballos de batalla" de los núcleos de la CPU. Los núcleos de la GPU no pueden en ningún caso sustituir a los núcleos de una CPU convencional.

Si un desarrollador de EA es capaz de paralelizar la tarea en cientos y miles de hilos independientes, la GPU ofrecerá un aumento de velocidad de 10 a 100 veces. Pero en la mayoría de las tareas individuales (comercio e indicadores, por ejemplo), los cálculos son secuenciales y no hay posibilidad de paralelizar eficazmente los procesos. Además, el uso de matemáticas reales de doble precisión en las GPU normales da como resultado velocidades la mitad de rápidas que los valores máximos alcanzados en float. Aquí hay un enlace interesante con la discusión de la velocidad desplegada en el doble: http://www.gpgpu.ru/node/901

Nosotros mismos compraremos tarjetas de diferentes clases para publicar una pequeña investigación para los cálculos de algunas tareas sobre doble y flotante. Nosotros mismos estamos interesados en lo que podemos conseguir.

He aquí un pequeño estudio de las velocidades de cálculo con float y double en diferentes dispositivos (informe completo: http://agora.guru.ru/hpc-h/files/017_Krivov_NvidiaGpuComparision.pdf). Se puede ver que la velocidad doble en Tesla es 2 veces inferior a la velocidad máxima de float, mientras que en tarjetas comunes como GeForce 480 GTX es casi 10 veces más lenta. En realidad significa que es posible obtener resultados aún mejores en una CPU normal de 4-8 núcleos con el uso activo de SSE2-4 y AVX en las matemáticas dobles:


Pudimos conseguir aceleraciones de cien veces (en el límite 100-1000 y más) en las pruebas secuenciales en el optimizador de estrategias comerciales y de diez veces (en el límite 10-20-50-100-200 veces) en la genética gracias a la idea nativa de las ejecuciones de pruebas paralelas y a MQL5 Cloud Network. Pero cuando se trata de paralelismo dentro de una misma tarea, todo el esfuerzo recae en el programador de la GPU, que puede distribuir inteligentemente la tarea entre cientos o miles de núcleos simples independientes.


Hay otro matiz: lo más probable es que cuando se utilicen varios agentes en el ordenador, sólo se asigne a uno de ellos el derecho a utilizar la GPU. O bien, si hay unos pocos dispositivos GPU físicos reales, se distribuirán entre los agentes al inicio de los mismos.

La cuestión es que no es razonable dividir un dispositivo físico entre varios agentes, ya que la compartición resultante provoca una caída no lineal del rendimiento final. En otras palabras, 4 agentes en una GPU tendrían un rendimiento mucho peor que 1 agente en una GPU. Nuestras pruebas internas lo han demostrado.

Realizaremos pruebas más detalladas y daremos con una solución que maximice el resultado.

Кофигурацыя системы на базе Tesla C2050/C2070 (C2075) | GPGPU.ru
  • www.gpgpu.ru
Здравствуйте! Возникла задача внедрения GPU-Computing для решения задач численного моделирования (симуляция и оптимизация фабрик полупроводников с помощью эвристик, докторская работа). Считать действительно много, и есть довольно хороший потенциал для распараллеливания расчетов, никакой роботы с видео, рендерингом и прочим. Помогите, пожалуйста...
 
 
 
Gracias por la aclaración.
Renat:

........

Hemos sido capaces de obtener centenas de veces (en el límite 100-1000 y más) de velocidad en las búsquedas secuenciales en Strategy Trading Optimizer y diez veces (en el límite 10-20-50-100-200 veces) de velocidad en la genética debido a la idea nativa de las ejecuciones de pruebas paralelas y MQL5 Cloud Network. Pero cuando se trata de paralelismo dentro de una misma tarea, todos los esfuerzos recaerán en el programador de la GPU, que puede distribuir razonablemente la tarea entre cientos o miles de núcleos simples independientes.

........

Para mí personalmente, lo importante es la aceleración en el optimizador. Así que espero la necesaria actualización + tabla de rendimiento de las diferentes tarjetas de vídeo.
 

Publicado de nuevo desde el hilo de OpenCL en MQL4.com:

https://www.mql5.com/ru/forum/137422/page6

No es tan sencillo.

Además, Rinat está confundiendo a la gente: OpenCL 1.0 puede funcionar bien con double float, es una "opción abiertamente disponible" soportada por todos los fabricantes - PERO AÚN NO PARA TODOS LOS MAPAS ANTIGUOS.

http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/

" Opción de doble precisión y media coma flotante

OpenCL 1.0 añade soporte para doble precisión y medio punto flotante como extensiones opcionales. El tipo de datos double debe confirmar el formato de almacenamiento de doble precisión IEEE-754.

Una aplicación que quiera utilizar double tendrá que incluir la directiva #pragma OPENCL EXTENSION cl_khr_fp64 : enable antes de declarar cualquier tipo de datos de doble precisión en el código del núcleo. Esto ampliará la lista de tipos de datos vectoriales y escalares incorporados para incluir los siguientes:.....".

Puede funcionar en el Probador de Estrategias pero no funcionará en el Asesor Experto OpenCL 1.0 no porque, como dice Rinat, "no hay doble flotación allí" sino, como ya he mencionado, porque no hay roscado seguro en OpenCL 1.0 y no hay roscado en MT4-5.

OpenCL (y CUDA) tiene mucha confusión en general. ¿Qué quieres? Al fin y al cabo, los ingenieros de hierro y radio se propusieron cambiar el concepto de programación. Tienen una mentalidad de hierro.

También habrá un problema con la llamada selección de PLATAFORMA: el programa, es decir, MT o DLL o Expert Advisor, DEBE, simplemente DEBE seleccionar manualmente la plataforma (AMD, Nvidia, Intel), que puede ser varias diferentes en un ordenador y ejecutará el kernel OpenCL, y luego seleccionar manualmente DEVICE si el ordenador tiene Multi-GPU. La autoselección de plataforma en OpenCL aún no existe. Rinat habla de "auto-selección del más poderoso" pero no sé cómo es. En el ejemplo que se muestra, no hay selección de plataforma ni de dispositivo (GPU, CPU).

Además, todavía no existe en el estándar la paralelización automática de tareas en varias GPUs o en GPU+CPU. Digámoslo así: en algunas versiones de sus controladores/SDK AMD solía introducir dicho autoaprovisionamiento pero tuvo algunos problemas y por el momento AMD ha desactivado esta función.

En resumen: desarrollar y habilitar programas OpenCL c/o MT4-5 requiere cierto esfuerzo manual y por lo tanto no funcionará automáticamente o "recompilando con opción". Lo cual, a su vez, está plagado de atascos en el funcionamiento real. Será un buen trabajo y, lo que es importante, me permito repetirlo, desgraciadamente es la PROGRAMACIÓN ORIENTADA A LOS JUDÍOS, que está mal. La depuración de programas paralelos para CUDA u OpenCL resultó ser mucho más difícil de lo que los revolucionarios del hierro suponían. Nvidia incluso canceló su conferencia sobre CUDA de otoño de 2011, debido a los problemas con los controladores y a las numerosas quejas sobre el bloqueo de la depuración. Así pues, han añadido otras 1.000 nuevas funciones al último kit de herramientas, ¿y qué hacer con ellas si los programas más sencillos ni siquiera se ejecutan o lo hacen con interrupciones? Después de todo, ni siquiera han mencionado la mitad del mecanismo interno de OpenCL o CUDA en sus herramientas descriptivas.

La velocidad de la GPU (en GigaFLOPS) de una tarjeta de vídeo colgada debido a la compatibilidad del controlador o del software es cero.

OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум
  • www.mql5.com
OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум
Razón de la queja: