Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1524 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  100% UC

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

100% UC

n°2184613
fddawn
Posté le 07-04-2013 à 16:57:22  profilanswer
 

Bonjour, j'ai googlé et cherché, mais Ada n'étant pas le langage le plus répandu... Le fait qu'il gère le multithreading nativement...
 
Bref voilà j'aimerais "simplement" créer un programme utilisant chaque thread du processeur au maximum, c'est une requête qui peut paraître stupide, mais c'est ce que je cherche à faire...
Mes multiples tentatives n'ont rien donné, tout ce que j'ai réussi à faire c'est occuper 25% du proc (1 coeur sur 4 pour mon quad) et gonfler la RAM à sa vitesse limite (de l'ordre du Giga-octet/seconde)
 
Mes échecs viennent sans doute du fait que j'ignore finalement ce qu'il se passe réellement au niveau du processeur (enfin disons l'archi x86 émulée de nos jours sur les Intels du moins...) aussi bien au niveau des registres que des threads eux-mêmes...
 
Merci d'avance

mood
Publicité
Posté le 07-04-2013 à 16:57:22  profilanswer
 

n°2184623
Profil sup​primé
Posté le 07-04-2013 à 18:18:55  answer
 

Bonjour
Et si tu lance quatre fois ton process en question il se passe quoi ?


Message édité par Profil supprimé le 07-04-2013 à 18:19:21
n°2184627
fddawn
Posté le 07-04-2013 à 19:45:14  profilanswer
 

J'atteins effectivement les 100% ! Le but de mon jeu stupide serait de trouver un moyen de le faire dans un seul exécutable (ce serait un peu comme me prouver qu'Ada le permet), j'ignore si un pragma en rapport avec le multithreading changerait quelque chose, je vais creuser ce soir, merci pour l'astuce en tout cas je n'y avais pas pensé, mais ce n'est pas exactement ce que je recherche

n°2184628
Profil sup​primé
Posté le 07-04-2013 à 19:49:46  answer
 

Tu peux télécharger Quadtruck, je viens de l'écrire pour tester, je ne doit avoir qu'un deux corp, et encore pas certain, mais ça doit marcher.


Message édité par Profil supprimé le 07-04-2013 à 19:50:40
n°2184659
fddawn
Posté le 08-04-2013 à 00:17:22  profilanswer
 

(désolé de la réponse tardive)
Déjà un énorme merci d'aider le grand débutant que je suis, je manque de connaissances, exp en dev...
 
Je n'ai pas de gnat récent et du coup le compilo a tiqué sur sur un truc (généricité au niveau de la procedure), ce n'est pas de l'Ada 95 non ?
J'ai quand même pu faire le test en remettant tout en un seul source (exit le côté générique et pratique de ton task manager)
D'ailleurs, je ne sais pas s'il est minimal (juste pour l'exemple) mais merci de le partager !
 
J'ai peut-être fait n'importe quoi (ça ne m'étonnerait pas) mais rapidement j'ai collé tout ça en un fichier :
 
http://pastebin.com/aj5sHKyV
 
alors le put est commenté parce que sous windows ça fait un csrss.exe qui tourne à mort (il doit s'occuper du graphique je crois)
donc les put_line ça ralentie beaucoup dans une loop, à tel point que le programme n'utilise plus que moins d'1% d'UC
 
et ensuite tel quel le programme ne tourne pas assez pour monter l'UC, sous process explorer j'ai les infos :
 
j'ai donc bien 4 threads actifs (~60k changements de contexte attribués à chaque) mais la conso UC va de 2 à 5%, donc ça ne dépasse pas les 15-20% de moyenne au total, et j'ai bien sûr le 5ème thread qui est le programme en lui même (200 CS ?)
 
Par contre si je commente le Screen_Manager.Get(Process_Id); appelé à chaque boucle de la tâche, j'obtiens 3 threads 25% uc CHACUN
la raison apparemment c'est le wait pour la 4ème tache, si la valeur est mise à 0.0000025 comme les autres j'ai le tant attendu :
 
100% !!!
 
Merci infiniment :)
 
Mais du coup pour que ce sujet ait plus d'utilité pour les débutants comme moi qui vont lire, faudrait que je trouve mon erreur, j'ai honte de montrer mes sources c'est dégueulasse (des tableaux à indice indéfinis de tâches s'amusant à looper sur des declare de pointeurs sur des éléments trop gros ('size use 200), comprenez-moi bien : j'étais désespéré)
 
En fait je ne suis pas sûr mais peut-être que je mettais pas de calculs compliqué dans les tâches, les tâches faisaient la même opération (mais pas sur des variables similaires pourtant...) qui consistait à additionner ou multiplier, le compilateur a-t-il été intelligent au point de faire un exéc qui se mette à rassembler le boulot ?
 
L'informatique reste un mystère, surtout le compilateur et la forme réelle de mon exe qu'il concocte !
 
En tout cas merci bien de ton aide, efficace et rapide ;)

n°2184798
Profil sup​primé
Posté le 08-04-2013 à 19:24:56  answer
 

De rien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  100% UC

 

Sujets relatifs
Hauteur de div (100%)DOS : Attendre sans consommer 100% de l'UC
[Resolu] problème CSS : faire un 100% et soustraire des PXProbleme de footer avec height 100% ...
probleme avec hauteur de div à 100%Un coup de main pour trouver la raison de 100% de conso du processeur
Header puis bloc occupant 100% du reste de la page[SAGE 100 SQL] Job SQL Agent de MAJ Lignes de devis
[RESOLU] JProgressBar qui affiche directement 100% :( 
Plus de sujets relatifs à : 100% UC


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR