Vi vi je suis d'accord, cependant quid de l'intégration avec tout ce qui touche à l'accélération 3D, les shaders, les décodeurs H264 toussa ?
Non parcque de manière générale, notamment pour les jeux, dès qu'un truc est consommateur de calcul, ce travail est délégué à un composant dédié à ce type de traitement.
Le CPU reste la solution de secours "générique".
C'est pour ça qu'il faudra que le compilateur soit capable de générer du shading language, OpenCL. C'est un peu de travail, mais ça ne devrait pas être insurmontable, à condition évidemment, qu'on se restreigne à lui demander du calcul pur.
Le système présenté pendant la réunion, de pattern visiteur pour les optimisation du compilateur sert précisément à ça : son rôle sera de détecter les formes de graphes dans le code qui pourront être confiée à un GPU, et de générer un appel vers la fonction OpenCL qui va bien.
Tu peux montrer un exemple, ca semble intéressant.
On va définir deux objets fictifs maitre et un objet calcul.
Section Header
calcul1.exec 1;
calcul2.exec 2;
calcul3.exec 3;
// donne lieu a 3 thread à exécution simultanée
);
Section Header
- name := CALCUL;
Section Inherit
- parent_object:OBJECT := OBJECT;
Section Public
- exec i : INTEGER <-
(
// Code du calcul
);
C'est le fait de mettre - à la place de + devant le name du prototype CALCUL qui fait que l'exécution de ses méthodes devient parallèle.
Par contre, si tu utilise une autre méthode renvoyant un résultat et créant une dépendance, le compilateur va évidemment sérialiser.
Le modèle te garantit que tes synchonise sont effectués correctement, tu n'as rien d'autre à faire que de mettre + ou - devant le name de ton objet pour dire s'il doit y avoir parallèlisme ou pas.
Il me semble aussi que si tu fais :
1.to 10 do { i : INTEGER;
ma_collection.add_last (calcul.exec i)
};
ça parallèlise aussi
Tout est expliqué dans le manuel de la 0.3, page 97
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: beaucoup de blabla, peu d'info
Posté par Ontologia (site web personnel) . En réponse au journal Retour sur le Isaac Meeting 2008. Évalué à 3.
Non parcque de manière générale, notamment pour les jeux, dès qu'un truc est consommateur de calcul, ce travail est délégué à un composant dédié à ce type de traitement.
Le CPU reste la solution de secours "générique".
C'est pour ça qu'il faudra que le compilateur soit capable de générer du shading language, OpenCL. C'est un peu de travail, mais ça ne devrait pas être insurmontable, à condition évidemment, qu'on se restreigne à lui demander du calcul pur.
Le système présenté pendant la réunion, de pattern visiteur pour les optimisation du compilateur sert précisément à ça : son rôle sera de détecter les formes de graphes dans le code qui pourront être confiée à un GPU, et de générer un appel vers la fonction OpenCL qui va bien.
Tu peux montrer un exemple, ca semble intéressant.
On va définir deux objets fictifs maitre et un objet calcul.
Section Header
+ name := MAITRE;
Section Inherit
- parent_object:OBJECT := OBJECT;
Section Public
- main <-
(
+ calcul1, calcul2, calcul3 : CALCUL;
calcul1 := CALCUL.create;
calcul2 := CALCUL.create;
calcul3 := CALCUL.create;
calcul1.exec 1;
calcul2.exec 2;
calcul3.exec 3;
// donne lieu a 3 thread à exécution simultanée
);
Section Header
- name := CALCUL;
Section Inherit
- parent_object:OBJECT := OBJECT;
Section Public
- exec i : INTEGER <-
(
// Code du calcul
);
C'est le fait de mettre - à la place de + devant le name du prototype CALCUL qui fait que l'exécution de ses méthodes devient parallèle.
Par contre, si tu utilise une autre méthode renvoyant un résultat et créant une dépendance, le compilateur va évidemment sérialiser.
Le modèle te garantit que tes synchonise sont effectués correctement, tu n'as rien d'autre à faire que de mettre + ou - devant le name de ton objet pour dire s'il doit y avoir parallèlisme ou pas.
Il me semble aussi que si tu fais :
1.to 10 do { i : INTEGER;
ma_collection.add_last (calcul.exec i)
};
ça parallèlise aussi
Tout est expliqué dans le manuel de la 0.3, page 97
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker