Voici ce que vous pouvez faire avec OpenCL directement dans MetaTrader 5, sans aucune DLL. - page 5
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
Dans ce contexte, AMD semble avantageux non seulement en raison de la rapidité évidente de ses calculs mathématiques (les fermes d'exploitation minière sont généralement construites sur AMD), mais aussi pour sa stratégie de normes ouvertes (ils se sont ouverts et font beaucoup de promotion auprès du public). L'introduction d'OpenCL 2.0 dans les cartes AMD a rapproché cette spécification des capacités de CUDA et il est désormais inutile de préparer le terrain pour CUDA.
Ce sont des informations utiles, alors qu'il y a environ 7 ans, je m'amusais avec CUDA et je pensais qu'il régnait toujours sur le jeu.
Ma question est la suivante: qu'en est-il des débogueurs pour OpenCL aujourd'hui ? Je ne fais pas référence au terminal MT5 mais au terminal MT5 en général. Jusqu'à présent, je n'ai vu que le débogueur d'Intel en tant que plugin de Visual Studio et un débogueur autonome (déprécarisé) de la même société. Mais il semble que ce soient les processeurs et les graphiques intégrés d'Intel qui soient destinés à cet usage. Je ne comprends pas bien comment déboguer un code parallèle - pour moi, c'est encore une boîte noire.
Vous ne pouvez travailler avec CUDA que pour vous-même ou pour des domaines spécifiques où vous pouvez exiger la présence explicite de cartes Nvidia.
Oui, CUDA avait plus de fonctionnalités. Cependant, avec le matériel AMD qui sort avec OpenCL 2.0 et la nouvelle version d'OpenCL 2.1, il n'y a pas de raison de rester enfermé dans le carcan des fournisseurs. Surtout lorsque ce fournisseur réduit également la fonctionnalité.
En termes de couverture maximale, il n'y a qu'un seul choix : OpenCL, qui fonctionne également très bien sur les processeurs normaux. Autrement dit, il n'est pas nécessaire d'exiger la présence inconditionnelle du GPU ou d'écrire deux versions du code pour le GPU et le CPU. Une fois écrit, le code OpenCL fonctionnera sur différentes configurations.
CUDA/OpenCL ne peut être débogué que par des débogueurs spécialisés. Il ne peut y avoir de miracle ici.
dans l'exemple
Sur les configurations avec un périphérique disponible pour le CPU, le message "OpenCL non trouvé" s'affiche.
Autrement.
travaux
*Le problème est la sélection de l'appareil par défaut
Peut-on avoir tout cela sous une forme agréable, sans toutes les citations ? C'est gênant pour la perception et la création.
Et pour les réseaux neuronaux, nous devrions avoir des classes standard, et il est possible d'utiliser opcl instantly) comme wellslab
"#define HL2Count " + (string)hl2NeuronCount + " \r\n"
//------------------------------------------------------------------------------------
"#define NeuronSensitivity " + (string)NeuronSensitivity_P + " \r\n"
//------------------------------------------------------------------------------------
"#define sampleCount " + (string)sampleCount + " \r\n"
//------------------------------------------------------------------------------------
"#define signalCount " + (string)signalCount + " \r\n"
//------------------------------------------------------------------------------------
"#define StrArrSaSize " + (string)(sizeof(ArrSample) / sizeof(float)) + "\r\n"
"typedef struct{float C[StrArrSaSize];} ArrSa; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrWeSize " + (string)(sizeof(ArrWe) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrWeSize];} ArrWe; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrCrSize " + (string)(sizeof(ArrCr) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrCrSize];}ArrCr; \r\n"
//------------------------------------------------------------------------------------
"#define Spread " + (string)(Spread_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
"#define Point " + (string)Point() + " \r\n"
"#define SL " + (string)(StopLoss_P * Point()) + " \r\n"
"#define TP " + (string)(TakeProfit_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
" \r\n"
"__kernel void Work(__global ArrSa *Sample, \r\n"
" __global ArrWe *Weights, \r\n"
" __global ArrCr *Result) \r\n"
"{ \r\n"
" int thread = get_global_id(0); \r\n"
" \r\n"
" //------------------Переменные нейронной сети---------------------------------\r\n"
Peut-on avoir tout cela sous une forme agréable, sans toutes les citations ? C'est trop gênant pour la perception et la création.
Et pour les réseaux neuronaux, nous devrions avoir des classes standard, et il est possible d'utiliser opcl instantly) comme wellslab
Il s'agit d'une démonstration non seulement des calculs GPU dans le code MQL5, mais aussi des capacités graphiques du terminal :
Le code source complet sous forme de script est joint. Le bogue sur OpenCL 1.2 a été corrigé.
Va-t-il être transféré dans le nuage pour les agents ?
Va-t-il être transféré dans le nuage pour les agents ?
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Voici ce que vous pouvez faire avec OpenCL directement dans le terminal MetaTrader 5 sans aucune DLL
Renat Fatkhullin, 2016.12.10 14:49
Bientôt, nous autoriserons OpenCL dans MQL5 Cloud Network, au moins pour les implémentations CPU.Tout est génial, mais ! Il y a un gros problème avec OCL et en général avec tous les moyens de parallélisation - très peu d'algorithmes peuvent être efficacement parallélisés. Pourquoi dans les exemples de calcul parallèle si populaires sont la simulation de vagues, la chute d'une balle sur une pyramide avec leur destruction, c'est-à-dire tout ce qui peut être décomposé en petits morceaux et calculé sur votre propre processeur.
Pour fora/bear, il s'agit bien sûr des réseaux neuronaux, des diverses transformées de Fourier, des ondelettes, des filtres, etc. qui sont tous parfaitement parallèles. Mais il existe des algorithmes linéaires qui ne peuvent pas du tout être mis en parallèle. En règle générale, c'est lorsque le résultat de l'étape suivante de l'algorithme est basé sur le résultat de l'étape précédente.
J'ai écrit ceci pour ceux qui pensent que je vais acheter deux cartes vidéo cool et que tout va bien fonctionner dans mon testeur.