OpenCL : tests de l'implémentation interne dans MQL5 - page 63

 
GKS: Si AMD n'avait pas acheté ATI Readon il y a quelques années.

ATI a été acheté il y a 6 ans, en 2006.

Le seul dommage est que les concurrents d'Intel ne disposent pas d'une technologie similaire à l'Hyper-threading ; espérons qu'AMD l'inventera.

Bulldozer est une sorte d'implémentation hardcore de l'hyper-threading : 8 sous-cœurs avec des FPUs évidemment rares qui se battent aussi pour les ressources.

Étonnamment, Bull s'est révélé légèrement meilleur que Thuban x6 en moyenne, même en multithreading. Sur des tâches entières et bien distinctes, il est rapide (il est légèrement inférieur à l'i7), mais sur tout le reste, il perd face à l'i7 et se retrouve, en moyenne, à égalité avec l'i5-2400. En bref, un processeur de serveur pour le bureau. Et il est peu probable que Trinity puisse remédier à cette situation : les noyaux sont passés au bulldozer.

Selon ixbt,

Gain de performance du CPU allant jusqu'à 29 %, ce qui est à mettre au crédit du nouveau cœur de processeur conventionnellement appelé Piledriver.

J'avais donc tort. Je me demande quelles applications seraient comme ça ?

AMD ����������� APU ����� A ������� ��������� (Trinity)
AMD ����������� APU ����� A ������� ��������� (Trinity)
  • www.ixbt.com
��� � ���������, �������� AMD ������� ����������� ��������� ���������� ����� A ������� ���������, ��������� ����� ��� �������� ������������ Trinity. ��� ������������� ��� ��������, ������� ������������ ������, ���������� �� ������������ � ����������� ����������, HTPC � ������������ ������. APU ������� ���������, �� ������ �������������...
 
Mathemat: Bulldozer est une sorte d'implémentation hardcore hypertrading : 8 sous-cœurs avec des FPUs évidemment rares, qui se battent aussi pour les ressources.

C'est encore pire en termes de performance énergétique. Combien d'énergie supplémentaire est dépensée pour faire fonctionner chaque cœur physique que lorsque 4 cœurs physiques exécutent 8 threads indépendants...

/ J'ai corrigé le message en séparant la citation de votre réponse. Pour pouvoir taper votre réponse en dehors de la citation (si vous n'y arrivez pas), cliquez sur le bouton HTML à gauche, tapez quelques lettres à la toute fin de la balise, et revenez au mode visuel - Mathématique/

 
Je veux croire que dans ce projet...
 

https://www.mql5.com/ru/articles/405 - après avoir lu cet article, je me suis intéressé au sujet du calcul par le GPU, bien que je ne sois pas un programmeur. Dans cet article, je suis tombé sur un lienhttp://www.ixbt.com/video3/rad.shtml, qui a attiré à son tour cet article -http://www.ixbt.com/video3/rad2.shtml. Je pense que ce thème pourrait zaiterezovat développeurs de ce projet, car il décrit une variante pour augmenter la stratégie d'optimisation de la performance testostérone avec des opérations complexes. Peut-être cela aidera-t-il au développement du projet.

P.s Je n'ai pas lu cet article jusqu'à la fin.

Merci pour le conseil....

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 

Et que pensent les gens ici de l'AMP C++ que Microsoft a mis en place pour son VS11 :

http://msdn.microsoft.com/en-us/library/hh265136(v=vs.110).aspx

Nous avons annoncé cette technologie lors du sommet des développeurs AMD Fusion en juin 2011. Dans le même temps, nous avons annoncé notre intention de rendre la spécification ouverte, et nous travaillons avec d'autres fournisseurs de compilateurs afin qu'ils puissent la prendre en charge dans leurs compilateurs (sur n'importe quelle plate-forme).

Notez que MS souhaite que cette extension linguistique soit ouverte. J'ai essayé dans VS11 et je dois dire que c'est une chose cool. Au lieu d'un code CUDA SDK encombrant dans un .cu séparé, juste quelques lignes dans le même .cpp :

J'aimerais que MQL5 ait une fonction similaire. Je n'ai jamais travaillé avec OpenCL mais j'ai aussi entendu dire qu'il était difficile de programmer dans ce domaine.

C++ AMP Overview
C++ AMP Overview
  • msdn.microsoft.com
C++ Accelerated Massive Parallelism (C++ AMP) accelerates execution of C++ code by taking advantage of data-parallel hardware such as a graphics processing unit (GPU) on a discrete graphics card. By using C++ AMP, you can code multi-dimensional data algorithms so that execution can be accelerated by using parallelism on heterogeneous hardware...
 
gpwr: Ce serait bien si MQL5 avait les mêmes capacités.

La question d'OpenMP a déjà été posée. Ils ne le font pas.

 
Question aux développeurs de terminaux : est-il prévu d'ajouter la possibilité de définir la taille des groupes de travail à l'API OpenCL ? Ce serait très bien. Probablement, dans CLExecute(), si je comprends bien.
 
Mathemat:
Question aux développeurs de terminaux : est-il prévu d'ajouter à l'API OpenCL la possibilité de définir la taille des groupes de travail ? Ce serait très bien. Probablement, dans la fonction CLExecute(), si je comprends bien.

CLExecute(cl_krn,work_dim,offset,work) - n'est-ce pas ?

bool  CLExecute(
               int          kernel,                   // хендл на кернел OpenCL программы
               uint         work_dim,                 // размерность пространства задач 
               const uint&  global_work_offset[],     // начальное смещение в пространстве задач
               const uint&  global_work_size[]        // общее количество задач
               );
 
joo: CLExecute(cl_krn,work_dim,offset,work) - n'est-ce pas ?

Non, il s'agit simplement de la taille de l'espace de travail global.

Mais la taille du groupe de travail local n'apparaît nulle part dans l'implémentation des développeurs de terminaux. Eh bien, vous devriez.

Dans l'API OpenCL complète, il existe la fonction clEnqueueNDRangeKernel( ) dont l'analogue est CLExecute(). C'est son sixième argument - const size_t*local_work_size qui est nécessaire.

 
Je vois.