Voici ce que vous pouvez faire avec OpenCL directement dans MetaTrader 5, sans aucune DLL. - page 15
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Suppression de la clé OpenCL avant de l'exécuter. Le comportement n'a pas changé.
C'est-à-dire que le premier lancement du Conseiller Expert avec CLContextCreate(CL_USE_GPU_ONLY) produit les erreurs ci-dessus et le Conseiller Expert ne démarre pas. A partir de la deuxième exécution, le journal d'initialisation des périphériques OpenCL ne s'affiche plus, il n'y a qu'une erreur dans le journal de l'EA et l'EA ne fonctionne pas. Lors du redémarrage du terminal, EA avec une commandeCLContextCreate(0) corrigéefonctionne - un paysage marin méga-réaliste apparaît. Dans le même temps, mêmes erreurs detest de performance dans le journal d'initialisation, mais silence dans le journal d'EA.
La clé est légèrement modifiée :
[HKEY_CURRENT_USER\Software\MetaQuotes Software]
before - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,6c,2a,09,a4,b3,d8,e2,3f
после - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,98,6b,19,ab,41,5c,fd,3f
En principe, ce comportement n'est pas critique, si vous corrigez les EA/scripts et contournez les périphériques en les adressant explicitement et en vérifiant le signe CL_DEVICE_TYPE. Il est même préférable, à mon avis, de répartir les tâches de manière gérable sur des appareils ayant leur propre évaluation. C'est juste frustrant d'avoir des erreurs d'initialisation. Qui sait comment OpenCL se comportera dans la prochaine bataille.
Veuillez m'aider à trouver leSDK Intel original pour les applications OpenCL 2016 R2 pour écrire et tester les noyaux. Il est inutile d'écrire à Intel en russe ;)
Pourquoi n'essayez-vous pas d'utiliser le SDK d'AMD ?
Essayez de passer à la version bêta 2543
bêta 2545, version 2560.
Chaque fois que le scriptest exécuté pour la première fois:
Lors de l'exécution duscript avecCLContextCreate (CL_USE_GPU_ONLY) :Seascape (GBPUSD,H1) OpenCL not found. Error=5114
J'ai des erreurs similaires, mais il y a un an, sur une tablette plus faible, cela fonctionnait bien.
et maintenant même ça ne marche pas :avec les paramètres : CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - résultat : -1 avec code d'erreur: 5115
avec les paramètres : 0, 1 - résultat : positif
bêta 2545, version 2560.
Lorsquevous exécutez le script pour la première fois:
Lors de l'exécution duscript avec CLContextCreate(CL_USE_GPU_ONLY):Votre carte ne supporte pas les doubles calculs :
Il n'est pas possible d'utiliser les mathématiques flottantes dans les calculs financiers en raison des énormes arrondis et nous exigeons donc explicitement la prise en charge des doubles calculs.
Auparavant, nous autorisions l'activation d'OpenCL sans double, mais cela n'avait pas de sens.
Maintenant, nous le limitons explicitement.
J'ai des erreurs similaires, mais il y a un an, sur une tablette plus faible, cela fonctionnait bien.
Et maintenant, même cela ne fonctionne pas :avec les paramètres : CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - résultat : -1 avec code d'erreur: 5115
avec les paramètres : 0, 1 - le résultat est positif
Il est très étrange qu'Atom produise la même erreur à propos du double.
Nous devrons vérifier.
Le fait qu'Atom donne la même erreur à propos du double est très étrange.
Il ne supporte pas le double non plus.
C'est étrange en soi d'exiger un tel soutien de la part du terminal... Mon fichier .cl ne comporte aucun doublon et je n'utilise pas OpenCL pour des calculs scientifiques précis.
De plus, il ne s'agit pas d'un vieil Atom, mais d'un Atom moderne avec un GPU séparé.
Votre carte ne supporte pas le double comptage
Demandons à l'appareil lui-même :
La réponse du réservoir :
Dispositif OpenCL ext : cl_intel_accelerator cl_intel_advanced_motion_estimation cl_intel_ctz cl_intel_d3d11_nv12_media_sharing cl_intel_dx9_media_sharing cl_intel_motion_estimation cl_intel_simultaneous_sharing cl_intel_subgroups cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_gl_depth_images cl_khr_gl_event cl_khr_gl_msaa_sharing cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
En effet, il n'y a pas de support pour cl_khr_fp64.
Je n'arrive pas à trouver la fiche technique officielle de l'Intel HD Graphics 4400 contenant des informations sur l'absence de double précision sur le net pour m'assurer qu'il ne s'agit pas d'un problème de pilote.
La seule façon de déterminer si une carte vidéo possède le FP64 est d'utiliser des benchmarks gauchistes :
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_HD-Graphics-4400
Au fait, le coprocesseur graphique de Renata semble également ne pas avoir de support FP64 :
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_UHD-Graphics-630
Renat, pouvez-vous exécuter mon script ci-dessus pour déterminer si votre IGP supporte la double précision ?
Si c'est le cas, la raison pour laquelle votre test de performance a réussi sera claire.
Peut-être alors essayer l'option de convertir les tableaux mqlrates en int sur le CPU avant de les envoyer à OpenCL, en les multipliant par Digits. La consommation de mémoire est réduite de moitié. Après cela, jouez avec les vecteurs ou essayez de ne pas rencontrer d'erreur en utilisant des flottants. En principe, la précision des indicateurs Digits+1 devrait être plus que suffisante.
Le temps de la date peut aussi être facilement converti en int, si les 1440 minutes de la journée sont dans les 12 premiers bits (ou dans les 2 premiers octets), et les jours dans les bits supérieurs. Le gain de vitesse entre int et double devrait être suffisant pour couvrir le surcoût des fonctions personnalisées de type iTime dans les noyaux.