OpenCL: pruebas de implementación interna en MQL5 - página 20
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Se añadirán los códigos:
Se añadirán los códigos:
Gracias, entonces lo que falta es una función que compruebe la validez del mango.
Sólo aceptamos de las funciones CL el valor del puntero, no el puntero en sí, por lo que almacenar el puntero en diferentes lugares provocará una situación de intento de eliminación de un proceso no válido (ya sea contexto, buffer, programa o kernel).
función requerida:
Y también es necesario obtener programáticamente el tamaño de la memoria del dispositivo, porque las visiones tienen menos memoria que las CPU, mientras que todos los contextos existentes simultáneamente utilizan la misma memoria.
Sería bueno obtener la temperatura de la tarjeta (y de la CPU también) por medios estándar de mql para dosificar la carga.
// Porque he estado un poco alborotado... :)
La obtención de las propiedades de los objetos OpenCL estará disponible próximamente.
También se organizará la comprobación de las manillas.
1. no hay ninguna funcionalidad en OpenCL para obtener la temperatura y la carga de la GPU.
2. La obtención de propiedades de objetos OpenCL estará disponible en breve.
3. También se organizará la comprobación de las manillas.
1. Lo sé. No tiene que ser a través de OpenCL, tiene que ser a través del sistema. La idea es simplemente hacer la funcionalidad nativa (sin llamadas DLL de programas mql5).
Aquí hay algunas funciones excelentes:
TerminalInfoInteger
Devuelve un valor entero de una propiedad de entorno correspondiente de un programa mql5.
TerminalInfoString
Devuelve un valor de cadena de una propiedad de entorno correspondiente de un programa mql5
MQL5InfoInteger
Devuelve un valor de tipo entero de una propiedad correspondiente de un programa mql5 en ejecución
MQL5InfoString
Devuelve un valor de tipo cadena de una propiedad correspondiente de un programa mql5 lanzado
Sería bueno y lógico añadir:
SystemInfoInteger y por lo tanto
SystemInfoString
que proporciona acceso a toda la información necesaria sobre el entorno del sistema: número de núcleos, nombre y tamaño del sistema operativo, cantidad de memoria (total), cantidad de memoria disponible (libre) (RAM y espacio en disco), etc., etc.
Después de todo, el terminal no funciona en el espacio eterno vacío. Por lo demás, tiene un aspecto muy arenoso.
2, 3.
4. Asegúrate de implementar un acceso normal al buffer (cl_Read/WriteBuffer), especificando ambos offsets de inicio (tanto el offset de la matriz mql como el del buffer cl). De lo contrario, casi todas las matrices tienen que ser copiadas dos veces - ¿realmente lo necesitamos? No estamos escribiendo en OpenCL para perder tiempo reescribiendo de la nada a la nada. Eso no es justo. :)
...
4. asegúrate de que ya tienes un acceso normal al buffer (cl_Read/WriteBuffer), especificando ambos offsets de inicio (tanto el offset de mql-array como el offset de cl-buffer). De lo contrario, casi todas las matrices tienen que ser copiadas dos veces - ¿realmente lo necesitamos? No estamos escribiendo en OpenCL para perder tiempo reescribiendo de la nada a la nada. Eso no es justo. :)
Aclare lo que quiere decir con eso.
Hasta ahora no me he encontrado con las situaciones que describes.
Especifique qué quiere decir con eso.
Para qué sirve, aún no me he encontrado con las situaciones que describes.
No hay problema. He aquí un ejemplo reciente. Construyendo la familia Ema.
No hace falta nada exótico. Sólo quiero que sea como aquí:
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
No hay problema. He aquí un ejemplo reciente. Construyendo la familia Ema
No se requiere nada exótico, sólo quiero que sea como aquí:
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
Sí, lo entiendo, no quieres algoritmos más complicados y excesos de memoria por usar
y quieres ser capaz de compensar en la fase de copia.
No quiero copiar 100000 elementos y luego hacer 998000 desplazamientos. Pero debemos dejar la variante con desplazamiento que tenemos ahora, porque permite no copiar muchas veces los mismos datos, sino tomarlos para una nueva tarea desde un buffer CL ya preparado con un nuevo desplazamiento.
SZY también estaría bien poder sobrescribir reasignando o sobrescribiendo parte de los datos en el buffer de CL, entonces se podrían añadir los nuevos datos recibidos del tick sin tener que comprar todos los datos. En tiempo real esto apenas es útil, pero en el probador sí.