Merci, alors ce qui manque est une fonction pour vérifier la validité de la poignée.
Nous n'acceptons des fonctions CL que la valeur du pointeur, pas le pointeur lui-même, donc stocker le pointeur à différents endroits provoquera une situation où l'on essaiera de supprimer un processus invalide (que ce soit le contexte, le tampon, le programme ou le noyau).
Vous devez également obtenir de manière programmatique la taille de la mémoire de l'appareil, car les widgets ont moins de mémoire que l'unité centrale, et tous les contextes existant simultanément utilisent la même mémoire.
Urain: Il est également nécessaire d'obtenir par programmation la taille de la mémoire du dispositif, car les visions ont moins de mémoire que les CPU, tandis que tous les contextes existant simultanément utilisent la même mémoire.
Il serait bon d'obtenir la température de la carte (et du CPU aussi) par des moyens standards mql afin de doser la charge.
Il n'y a pas de fonctionnalité dans OpenCL pour obtenir la température et la charge du GPU. L'obtention des propriétés des objets OpenCL sera bientôt disponible. Un contrôle des poignées sera également organisé.
mql5: 1. il n'y a pas de fonctionnalité dans OpenCL pour obtenir la température et la charge du GPU. 2. La récupération des propriétés des objets OpenCL sera bientôt disponible. 3. un contrôle de la poignée sera également organisé.
1. Je sais. Il n'est pas nécessaire de passer par OpenCL, mais par le système. L'idée est simplement de rendre la fonctionnalité native (sans appels de DLL depuis les programmes mql5).
qui permet d'obtenir les informations requises sur l'environnement du système : nombre de cœurs, nom et taille du système d'exploitation, quantité de mémoire (totale), quantité de mémoire disponible (libre) (RAM et espace disque), etc.
Après tout, le terminal ne fonctionne pas dans un espace vide éternel. Sinon, il semble très sablonneux.
2, 3.
4. assurez-vous d'implémenter un accès normal au tampon (cl_Read/WriteBuffer), en spécifiant les deux décalages de départ (à la fois le décalage du mql-array et le décalage dans le cl-buffer). Sinon, presque tous les tableaux doivent être copiés deux fois - en avons-nous vraiment besoin ? Nous n'écrivons pas en OpenCL pour perdre du temps à réécrire de rien à rien. Ce n'est pas juste. :)
4. assurez-vous que vous avez déjà un accès normal au tampon (cl_Read/WriteBuffer), en spécifiant les deux offsets de départ (offset mql-array et offset cl-buffer). Sinon, presque tous les tableaux doivent être copiés deux fois - en avons-nous vraiment besoin ? Nous n'écrivons pas en OpenCL pour perdre du temps à réécrire de rien à rien. Ce n'est pas juste. :)
Précisez ce que vous entendez par là.
Je n'ai pas rencontré les situations que vous décrivez jusqu'à présent.
A quoi ça sert, je n'ai pas encore rencontré les situations que vous décrivez.
Pas de problème. Voici un exemple récent. Construire la famille Ema.
...........
while(limit/(cl_BufLength-1)>0)
{
for(int i=0;i<CountLine;i++)
{
dOut[i]=EmaBuffer[i].B[limit]; // переписываем начальные значения Ema
// в промежуточный массив, поскольку напрямую с указанного смещения
// загрузить в буфер невозможно.
}
CLBufferWrite(cl_Mem_Out,dOut,0,CountLine*sizeof(double)); // загружаем в gpufor(int i=1;i<cl_BufLength;i++)
{
dIn[i]=price[limit-i]; // переписываем цены
// То же самое с ценами.
}
CLBufferWrite(cl_Mem_In,dIn); // загружаем в gpu
CLExecute(cl_Krn,1,kOfs,kWork);
.........
..........
Rien d'exotique n'est requis. Je veux juste que ce soit comme ici :
int ArrayCopy( voiddst_array[], // куда копируем voidsrc_array[], // откуда копируем intdst_start=0, // с какого индекса пишем в приемник intsrc_start=0, // с какого индекса копируем из источника intcnt=WHOLE_ARRAY// сколько элементов );
Pas de problème. Voici un exemple récent. Construire la famille Ema
Rien d'exotique n'est requis, je veux juste que ce soit comme ici :
int ArrayCopy( voiddst_array[], // куда копируем voidsrc_array[], // откуда копируем intdst_start=0, // с какого индекса пишем в приемник intsrc_start=0, // с какого индекса копируем из источника intcnt=WHOLE_ARRAY// сколько элементов );
Oui, j'ai compris, tu ne veux pas d'algorithmes plus compliqués et de dépassements de mémoire en utilisant
//Выполняет OpenCL программу.bool CLExecute(int kernel, // хендл на кернел OpenCLuint work_dim, // размерность пространства задач constuint& global_work_offset[], // начальное смещение индексовconstuint& global_work_size[] // общее количество индексов
);
et vous voulez être en mesure de compenser au stade de la copie.
Je ne veux pas copier 100000 éléments et ensuite faire 998000 décalages. Mais nous devrions laisser la variante avec décalage que nous avons maintenant, car elle permet de ne pas copier plusieurs fois les mêmes données, mais de les prendre pour une nouvelle tâche à partir d'un tampon CL déjà préparé avec un nouveau décalage.
SZY, il serait également agréable de pouvoir écraser en réallouant ou en écrasant une partie des données dans le tampon CL, puis les nouvelles données reçues du tick pourraient être ajoutées sans avoir à acheter toutes les données. En temps réel, cela n'est guère utile, mais dans le testeur, ça l'est.
Les codes seront ajoutés :
Les codes seront ajoutés :
Merci, alors ce qui manque est une fonction pour vérifier la validité de la poignée.
Nous n'acceptons des fonctions CL que la valeur du pointeur, pas le pointeur lui-même, donc stocker le pointeur à différents endroits provoquera une situation où l'on essaiera de supprimer un processus invalide (que ce soit le contexte, le tampon, le programme ou le noyau).
fonction requise :
Il est également nécessaire d'obtenir par programmation la taille de la mémoire du dispositif, car les visions ont moins de mémoire que les CPU, tandis que tous les contextes existant simultanément utilisent la même mémoire.
Il serait bon d'obtenir la température de la carte (et du CPU aussi) par des moyens standards mql afin de doser la charge.
// Parce que je me suis un peu déchaînée... :)
L'obtention des propriétés des objets OpenCL sera bientôt disponible.
Un contrôle des poignées sera également organisé.
1. il n'y a pas de fonctionnalité dans OpenCL pour obtenir la température et la charge du GPU.
2. La récupération des propriétés des objets OpenCL sera bientôt disponible.
3. un contrôle de la poignée sera également organisé.
1. Je sais. Il n'est pas nécessaire de passer par OpenCL, mais par le système. L'idée est simplement de rendre la fonctionnalité native (sans appels de DLL depuis les programmes mql5).
Voici d'excellentes fonctions :
TerminalInfoInteger
Renvoie une valeur entière d'une propriété d'environnement correspondante d'un programme mql5.
TerminalInfoString
Renvoie une valeur de chaîne de caractères d'une propriété d'environnement correspondante d'un programme mql5.
MQL5InfoInteger
Renvoie une valeur de type entier d'une propriété correspondante d'un programme mql5 en cours d'exécution.
MQL5InfoString
Renvoie une valeur de type chaîne de caractères d'une propriété correspondante d'un programme mql5 lancé.
Il serait agréable et logique de l'ajouter :
SystemInfoInteger et donc
SystemInfoString
qui permet d'obtenir les informations requises sur l'environnement du système : nombre de cœurs, nom et taille du système d'exploitation, quantité de mémoire (totale), quantité de mémoire disponible (libre) (RAM et espace disque), etc.
Après tout, le terminal ne fonctionne pas dans un espace vide éternel. Sinon, il semble très sablonneux.
2, 3.
4. assurez-vous d'implémenter un accès normal au tampon (cl_Read/WriteBuffer), en spécifiant les deux décalages de départ (à la fois le décalage du mql-array et le décalage dans le cl-buffer). Sinon, presque tous les tableaux doivent être copiés deux fois - en avons-nous vraiment besoin ? Nous n'écrivons pas en OpenCL pour perdre du temps à réécrire de rien à rien. Ce n'est pas juste. :)
...
4. assurez-vous que vous avez déjà un accès normal au tampon (cl_Read/WriteBuffer), en spécifiant les deux offsets de départ (offset mql-array et offset cl-buffer). Sinon, presque tous les tableaux doivent être copiés deux fois - en avons-nous vraiment besoin ? Nous n'écrivons pas en OpenCL pour perdre du temps à réécrire de rien à rien. Ce n'est pas juste. :)
Précisez ce que vous entendez par là.
Je n'ai pas rencontré les situations que vous décrivez jusqu'à présent.
Précisez ce que vous entendez par là.
A quoi ça sert, je n'ai pas encore rencontré les situations que vous décrivez.
Pas de problème. Voici un exemple récent. Construire la famille Ema.
Rien d'exotique n'est requis. Je veux juste que ce soit comme ici :
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
Pas de problème. Voici un exemple récent. Construire la famille Ema
Rien d'exotique n'est requis, je veux juste que ce soit comme ici :
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
Oui, j'ai compris, tu ne veux pas d'algorithmes plus compliqués et de dépassements de mémoire en utilisant
et vous voulez être en mesure de compenser au stade de la copie.
Je ne veux pas copier 100000 éléments et ensuite faire 998000 décalages. Mais nous devrions laisser la variante avec décalage que nous avons maintenant, car elle permet de ne pas copier plusieurs fois les mêmes données, mais de les prendre pour une nouvelle tâche à partir d'un tampon CL déjà préparé avec un nouveau décalage.
SZY, il serait également agréable de pouvoir écraser en réallouant ou en écrasant une partie des données dans le tampon CL, puis les nouvelles données reçues du tick pourraient être ajoutées sans avoir à acheter toutes les données. En temps réel, cela n'est guère utile, mais dans le testeur, ça l'est.