Discussion de l'article "Comment installer et utiliser OpenCL pour les calculs" - page 6

 

Est-ce que quelqu'un peut avoir une mise à jour pour inclure les RX 580 / 570 ?

J'ai les deux cartes, mais je n'ai pas le livre de recettes pour des instructions détaillées afin d'exploiter ces cartes.

J'apprécie beaucoup.

 
Actuellement, j'essaie de faire fonctionner OpenCL sur une GTX1070, mais Metatrader ne mentionne pas le matériel et je ne peux pas l'activer quelque part. A quoi cela devrait-il ressembler avec le MT5 actuel ?
 
hao xue:

Est-ce que quelqu'un peut avoir une mise à jour pour inclure les RX 580 / 570 ?

J'ai les deux cartes, mais je n'ai pas le livre de recettes pour des instructions détaillées afin d'exploiter ces cartes.

J'apprécie beaucoup.

Je ne sais pas pourquoi le terminal ne reconnaît pas la rx580, mais opencl fonctionne. Vous pouvez essayer ce code :

void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- initialiser le contexte OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Affichage d'informations générales sur le périphérique OpenCL 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

Bonjour à tous


J'ai essayé le code sur lensflare sur un ordinateur avec un AMD 530 et un autre avec un NVIDEA gtx 1060 mais sans succès. Mes EA rapportent un 0 device supported. Est-ce que quelqu'un a eu le même problème ? Merci de votre compréhension.


void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- initialiser le contexte OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Affichage d'informations générales sur le périphérique OpenCL 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

Comment sélectionner le processeur openCL à utiliser ?
Il semble que j'ai CPU + Nvidia +Intel, et d'après la page principale, le GPU Intel est plus rapide.

De plus, mon Nvidia fonctionne un peu, puis se plante lorsque j'essaie de quitter l'EA.

 

>Afin de démontrer les avantages de l'utilisation d'OpenCL dans MQL5, le script OpenCL_Sample.mq5 a été écrit, qui calcule les valeurs d'une fonction à partir de deux variables sur un ensemble et affiche le résultat dans la fenêtre graphique à l'aide d'un label graphique (OBJ_BITMAP_LABEL).

L'exemple est intéressant mais étonnamment inutile.....

Quelqu'un peut-il donner un exemple d'optimisation d'un Expert Advisor standard sur OpenCL .... ?

en général je pense que l'article n'est rien, le monde entier évolue vers des frameworks (comme CNTK), un développeur pour MQL5 devrait écrire du code en MQL5, pas en OpenCL/CUDA, et les cœurs (CU) de toutes les cartes vidéo devraient être visibles comme des cœurs ordinaires dans la liste des cœurs disponibles pour l'optimisation et c'est tout.

C'est ce que je pense...

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
  • www.mql5.com
//| Создает объект "Графическая метка"                               |               chart_ID=0,                               sub_window=0,                             x=0,                                      y=0,                                      width=0,                                  height=0,                 ...
 
Boris Egorov:

Le développeur MQL5 devrait écrire du code en MQL5, pas en OpenCL/CUDA, et les cœurs (CU) de toutes les cartes vidéo devraient être visibles comme des cœurs ordinaires dans la liste des cœurs disponibles pour l'optimisation et c'est tout.

Je pense que oui...

si on vous donnait la possibilité d'écrire du code en MQL5 et de calculer des tâches sur GPU, pourquoi faites-vous du bruit ?

Une autre question est que vous ne réalisez pas quelle gamme de tâches peut être résolue sur GPU, et lesquelles ne peuvent pas l'être.

Voici un bon article, que j'ai lu moi-même au début de l'année https://habr.com/ru/company/combox/blog/425731/.

Si vous êtes en mesure de paralléliser une tâche d'optimisation, utilisez le GPU.

 
Igor Makanu:

comme s'il était possible d'écrire du code en MQL5 et de calculer des tâches sur GPU


comme on le fait en python/#.

Il n'y a pas d'OpenCL, il y a une connexion de cadre, vous lui dites simplement sur quoi calculer, donc personnellement, il est plus facile pour moi de construire une ferme à partir du GPU que du CPU.

 
Boris Egorov:

de la même manière qu'en python/#.

il n'y a pas d'OpenCL ici, c'est une connexion de framework

tout est correct et le framework est adapté aux tâches GPU, j'ai testé tensorflow de cette manière.


La question n'est donc pas posée à MQL5, mais aux créateurs de frameworks pour MQL5 - hélas, ils (les frameworks) n'existent pas, j'en souffre moi-même,

ou plutôt, il n'y en a que quelques-uns - alglib dans SB et de nombreux articles sur l'intégration avec des langages tiers.

En d'autres termes, comme l'écrivent les développeurs, écrivez-le vous-même, il n'y a pas de solutions toutes faites.

 
Igor Makanu:

Tout est correct et le framework est adapté aux tâches GPU, j'ai testé tensorflow de cette manière.


La question ne s'adresse donc pas à MQL5, mais aux créateurs de frameworks pour MQL5 - hélas, ils (les frameworks) n'existent pas, j'en souffre moi-même,

ou plutôt, il n'y en a que quelques uns - alglib dans SB et beaucoup d'articles sur l'intégration avec des langages tiers.

En d'autres termes, comme l'écrivent les développeurs, écrivez-le vous-même, il n'y a pas de solutions toutes faites.

Ce n'est pas tout à fait le cas.

Les développeurs sont bons et ont fait beaucoup, ils ont implémenté Fuzzy, Alglib, python mais la question est pourquoi ? Pourquoi ont-ils dépensé le temps précieux de développeurs cool pour implémenter tout cela, parce qu'en fait ils ne sont d'aucune utilité.

Bien sûr, nous parlons de réseaux neuronaux, Alglib est un framework extrêmement limité et si je ne me trompe pas, il n'est pas libre, il est impossible de créer un réseau neuronal normal dessus, même en théorie.

Je ne suis pas content de python non plus ... imaginez comment transférer la logique de l'EA dans un langage complètement différent .... et ensuite de nouveau .... pas moyen de faire ça correctement ... et quel est l'intérêt de cette hémorroïde.

c'est pourquoi il était nécessaire d'implémenter soit cntk soit tenzorflow dès le début ... alors on n'a pas besoin d'un optimiseur standard, on n'a pas besoin d'un algorithme génétique et on peut calculer sur GPU sans problème ...