Quelqu'un aurait-il une machine multi-pro ?

ChachaChacha Membre
13:12 modifié dans Vos applications #1
Bonjour,

Je suis désolé d'ouvrir un thread parallèle à  celui que j'ai déjà  lancé pour le beta-test de MozoDojo
http://www.objective-cocoa.org/forum/index.php?topic=675.msg7481;topicseen#msg7481
Cependant, ce dernier est un peu en train d'enterrer un problème qui se pose toujours, puisque les GBT (gentils beta testeurs) ne disposent pas de biprocesseur.
Voilà  : si quelqu'un avait une machine multi-pro, pourrait-il faire un essai, meme rapide, de MozoDojo ?
La dernière beta est ici :
http://ktd.club.fr/programmation/fichiers/MozoDojo.dmg


Il s'agirait de lancer un calcul d'abord en mode mono, puis en mode multi, avec à  chaque fois un essai avec un "image cache" vierge (File > Clear image cache), et un deuxième essai (avec cache à  jour).
Je voudrais juste savoir si des problèmes surviennent, et si, approximativement, ça va plus vite.
Pour que le test soit pertinent, il faudrait le lancer avec une grille assez fine (genre 70x70) et une banque d'images assez grande (>500). Et regarder les temps mis par les différentes étapes de calcul.
Pour activer/désactiver le mode multipro de l'appli, il y a le menu "Debug > Use Multiprocessing".

Merci d'avance à  ceux qui peuvent et qui veulent bien !

+
Chacha

PS : minute culturelle; d'après le Grevisse, quand on écrit "multi-machin", on ne met pas "machin" au pluriel. Surprenant, non ?

Réponses

  • cbrandtcbrandt Membre
    mars 2005 modifié #2
    j'ai un g4 bipro 450 sous la main actuellement... je regarde ça...

    [edit]
    bon, en mode normal environ 15 sec (grid 18x22, dossier avec 12 images)
    en mode multiprocesseur, ça bloque quand le progress affiche "analyzing source image"... threadviewer m'indique qu'un seul thread est actif (le 3ème), les autres sont en attente... (je joins les copies d'écran)

    [Fichier joint supprimé par l'administrateur]
  • ChachaChacha Membre
    mars 2005 modifié #3
    dans 1109667796:

    j'ai un g4 bipro 450 sous la main actuellement... je regarde ça...

    Cool, merci


    bon, en mode normal environ 15 sec (grid 18x22, dossier avec 12 images)

    Il faudrait vraiment que ça dure plus longtemps, pour pouvoir relever les temps mis par les différentes phases
    Analyzing Source Image
    Analyzing Libary
    Selecting Images
    Rendering

    Car en théorie, j'ai parallélisé chaque phase. Je voudrais savoir lesquels en bénéficient vraiment.


    en mode multiprocesseur, ça bloque quand le progress affiche "analyzing source image"...

    Au moins, ça ne marche pas, mais tout de suite. Je dois avoir un problème de partage de ressources. Je me penche sur ce problème.


    (je joins les copies d'écran)

    Woah, l'autre, comment il peut mater mon code, avec les symboles de débuguage ! Heureusement j'ai pas des méthodes "toto" ni "onVerraCaPlusTard", ça n'aurait pas fait très sérieux.

    Merci beaucoup, au fait

    +
    Chacha

    [edit]
    Heu, dis moi, dans les images que tu m'a données... c'est lequel, le thread 3 ?
    [/edit]
  • cbrandtcbrandt Membre
    13:12 modifié #4
    le thread 3 c'est la 3ème image...  :P

    ok, alors grid 30x38, dossier avec 68 photos:
    (à  la louche, j'ai pas chronométré)
    analyzing source image: 15 sec
    truc library: 42 sec
    selecting images: 7 sec
    rendering bidule: 5 sec

    par ailleurs, il exploite déjà  les deux processeurs, les deux jauges sont au taquet dans  Activity Monitor...

    ensuite j'ai recommencé (sans quitter l'appli, juste en recliquant sur "compute mozaic") ça a planté... (voir crashlog)

    [Fichier joint supprimé par l'administrateur]
  • ChachaChacha Membre
    mars 2005 modifié #5
    dans 1109672153:

    le thread 3 c'est la 3ème image...  :P

    Es-tu sûr ? celui avec le sleepuUntilDate ? Parce que dans le débuggeur de XCode, l'ordre des thread est un peu aléatoire.


    par ailleurs, il exploite déjà  les deux processeurs, les deux jauges sont au taquet dans  Activity Monitor...

    Ah bon ? Donc mon appli est multi-pro sans que je le sache ? En vérité, ce que j'appelle mode multi-pro, dans MozoDojo, c'est quand je décompose un calcul en autant de threads que de processeurs. Du coup, je m'attends à  avoir un thread de calcul par proc. Je ne sais donc pas expliquer pourquoi dans ton cas, le mode multi-pro semble déjà  bien exploité, à  moins que OSX soit capable de gérer un thread unique avec deux procs à  la fois !
    (NB : il y a plusieurs threads dans MozoDojo, mais seuls les threads de calcul sont vraiment lourds, donc je ne pense pas que ces threads auxiliaires puissent mettre tes jauges "au taquet")


    ensuite j'ai recommencé (sans quitter l'appli, juste en recliquant sur "compute mozaic") ça a planté... (voir crashlog)

    Drôle de CrashLog, c'est pas mon code qui plante, c'est celui de l'AppKit. Je ne comprends pas du tout l'origine de ce plantage. Quelqu'un a une idée ?
  • cbrandtcbrandt Membre
    13:12 modifié #6
    thread:
    ils tous sont en attente, sauf le 3 qui se réveille de temps en temps... dans un sleepUntilDate... sinon les plus intéressants sont les 6 et 7, qui attendent quelque chose dans computeFeaturesForImage...

    crash:
    si par exemple tu fournis un pointeur pourri (ou qui devient pourri pour cause de release en tro, etc) à  une NSView, au moment où elle veut s'afficher, alors... boum !


    bon courage ! en tout cas le résultat est pas mal ! 
  • ChachaChacha Membre
    13:12 modifié #7
    Sans grande conviction, j'ai modifié un truc dans le programme. Au vu des images que tu m'as envoyées représentant les états des threads, je ne vois vraiment pas ce qui peut bloquer. Si tu peux regarder si ma modif a changé quelque chose...
    http://ktd.club.fr/programmation/fichiers/MozoDojo.dmg


    Sinon, rassure-moi, ça ne marche pas que si tu actives le mode multi-pro ? En mode normal, ça marche ?

    +
    Chacha
  • cbrandtcbrandt Membre
    mars 2005 modifié #8
    en mode multiprocesseur, se se bloque en attente.
    en mode normal, 1er coup ok, et 2ème coup dans la foulée vrai plantage avec la log envoyée.

    je regarde la nouvelle version....


    EDIT:
    ok, alors les résultats:
    en mode multiprocesseur, ça se bloque pareil...
    en mode normal, ça ne plante plus... (par contre j'obtiens un résultat différent à  chaque fois, c'est normal docteur ?)

    EDIT2:
    on rejouant avec la 1ère version, finalement, ça ne plante plus... en tout il aura donc planté qu'une fois en fait...
    et pour ce qui est de l'utilisation des processeurs, après un examen plus approfondi, je reviens sur ce que j'ia dit plus haut: il utilise 1 seul processeur à  la fois, jusqu'à  99%, et en fait la charge de l'autre processeur vient des autres programmes qui tournent... il n'y a que vers la dernière seconde qu'il utilise environ 115% (donc les deux processeurs), mais c'est trop court pour être significatif...
  • ChachaChacha Membre
    13:12 modifié #9
    dans 1109683079:

    ok, alors les résultats:
    en mode multiprocesseur, ça se bloque pareil...

    Je ne suis pas trop surpris


    en mode normal, ça ne plante plus... (par contre j'obtiens un résultat différent à  chaque fois, c'est normal docteur ?)

    Oui, c'est normal. Pour éviter d'avoir des mosaà¯ques trop uniformes, c'est-à -dire qui répètent toujours les mêmes carreaux dans les zones homogènes, il y a un random qui traà®ne, et qui permet de s'éloigner (un peu) de la solution algorithmique optimale. J'ai mis ça dans la doc. Mais il va me falloir un peu de temps pour ajuster ce paramètre (ni trop, ni trop peu).


    on rejouant avec la 1ère version, finalement, ça ne plante plus... en tout il aura donc planté qu'une fois en fait...

    Argh ! Un bug aléatoire non reproductible !


    et pour ce qui est de l'utilisation des processeurs, après un examen plus approfondi, je reviens sur ce que j'ia dit plus haut: il utilise 1 seul processeur à  la fois, jusqu'à  99%, et en fait la charge de l'autre processeur vient des autres programmes qui tournent... il n'y a que vers la dernière seconde qu'il utilise environ 115% (donc les deux processeurs), mais c'est trop court pour être significatif...

    Ok, c'est plus cohérent.

    Il faut donc que je cherche d'où peut venir le blocage quand on a vraiment deux threads qui causent en même temps ! Chez moi, je peux toujours activer le mode multi-pro, ça va pas changer grand chose, et ça marche tout aussi bien. Même quand je triche et que je fais croire au programme que j'ai deux processeurs. ça reste du faux multi-tâche.
    Pfff, galère en perspective.

    Merci encore

    +
    Chacha
  • cbrandtcbrandt Membre
    13:12 modifié #10
    si les deux threads accèdent à  la même structure ou au même objet en même temps, il vaut mieux mettre des verrous pour empêcher un thread de le modifier en même temps qu'un autre...

    par ex. si on considère le cas suivant: une fonction effectue simplement une addition:
    <br />void toto(void)<br />{<br />    x++;<br />}<br />
    

    eh bien si deux threads l'exécutent en même temps, la valeur de x ne va pas forcément augmenter de 2... donc il faut protéger la section critique avec des verrous:
    <br />void toto(void)<br />{<br />    attendreVerrouEtVerouiller ();<br />    x++;<br />    deverouiller ();<br />}<br />
    

    attendreVerrouEtVerouiller () va attendre que le vérrou soit libre, puis va le vérouiller... et deverouiller () va simplement le déverouiller. comem ça les différents threads n'y accèdent pas tous en même temps. il faut placer judicieusement les verrous et ne pas tout verouiller en vrac, sinon un seul thread va travailler à  un moment donné et les autres vont toujours être en attente du vérrou.

    avec cocoa, c'est la class NSLock qui gère ça. bon courage...
  • ChachaChacha Membre
    13:12 modifié #11
    dans 1109685382:

    avec cocoa, c'est la class NSLock qui gère ça. bon courage...


    T'inquiètes pas, je suis sensibilisé au partage de ressources. Des NSLock, NSConditionLock et des @synchronized, j'en ai mis dans mon programme. Et c'est justement parce que je pensais avoir fait les choses bien que je suis embêté de voir qu'en vrai mode bi-pro, ça ne va pas.
  • ChachaChacha Membre
    13:12 modifié #12
    Dis-moi cbrandt, puis-je encore abuser de toi ? Le sort t'a désigné comme étant mon seul recours multi-processique, et ton aide m'est précieuse. Aussi, pourrais-je t'envoyer par mail une version bien verbeuse de MozoDojo, qui crache bien dans la console, pour que je puisse suivre les blocages ?

    Si tu veux pas, pas de problème : je la remets dans ma culotte (mais tu sais pas c'que tu perds); si mon appli t'as pas plu, n'en parlons pluuuuuus
    (y'a une dédicace, là ).

    Tu peux m'envoyer un mail à  mon adresse que tu trouveras dans l'appli (about box ou doc). (Non, cette partie n'est pas chantée, vous pouvez couper la musique)

    +
    Chacha
  • fouffouf Membre
    13:12 modifié #13
    dans 1109690352:

    Si tu veux pas, pas de problème : je la remets dans ma culotte (mais tu sais pas c'que tu perds); si mon appli t'as pas plu, n'en parlons pluuuuuus
    (y'a une dédicace, là ).

    Tu peux m'envoyer un mail à  mon adresse que tu trouveras dans l'appli (about box ou doc). (Non, cette partie n'est pas chantée, vous pouvez couper la musique)


    Fan de "Calvin et Hobbes" mais aussi de Renaud. Dis donc Chacha, t'as posté dans "Playlists de developpeurs" ??
  • ChachaChacha Membre
    13:12 modifié #14
    dans 1109690985:

    Fan de "Calvin et Hobbes" mais aussi de Renaud. Dis donc Chacha, t'as posté dans "Playlists de developpeurs" ??


    Je suis sûr que sur le forum d'Objective-Cocoa, Renaud est content qu'on soit fan de lui.
  • cbrandtcbrandt Membre
    mars 2005 modifié #15
    euh oui mais bon: là  je suis de retour chez moi, sur mon vaillant et fidèle monoprocesseur....  :'( :'(

    on verra ça demain au bureau, tu peux m'envoyer un MP avec ton truc bien baveux (euh, verbeux)
  • ChachaChacha Membre
    13:12 modifié #16
    dans 1109693623:

    on verra ça demain au bureau, tu peux m'envoyer un MP avec ton truc bien baveux (euh, verbeux)


    Sympa! Tu m'enverras un mail pour que j'aie ton adresse ? Et à  charge de revanche (par exemple sur le bridge iTunes)
    +
    Chacha
  • cbrandtcbrandt Membre
    13:12 modifié #17
    ok ça roule
  • odjauodjau Membre
    13:12 modifié #18
    dans 1109690352:

    Dis-moi cbrandt, puis-je encore abuser de toi ? Le sort t'a désigné comme étant mon seul recours multi-processique, et ton aide m'est précieuse.


    :o J'ai à  dispo (au boulot  :()un p'tit G5 bipro 2 GHz avec un peu de RAM (environ 2.5Go)... mais j'suis en surcharche totale. J'essaye de voir demain matin si je peux tester ton appli qui a l'aire "pas que belle"  ;)
  • ChachaChacha Membre
    13:12 modifié #19
    dans 1109696904:

    ton appli qui a l'aire "pas que belle"  ;)


    D'accord, mais attention, elle n'a l'aire qu'en surface ;-)

    Et merci d'avance !
  • odjauodjau Membre
    13:12 modifié #20
    dans 1109697190:

    dans 1109696904:

    ton appli qui a l'aire "pas que belle"  ;)


    D'accord, mais attention, elle n'a l'aire qu'en surface ;-)


    J'ai jamais dis que je ne faisais jamais de fautes d'ortogaf  ::)
  • ClicCoolClicCool Membre
    13:12 modifié #21
    dans 1109697190:
    elle n'a l'aire qu'en surface ;-)


    Excellent  ;D
    De la part d'un amateur: chapeau bas Chacha  :o

    P.S: et je suis un amateur averti
  • odjauodjau Membre
    13:12 modifié #22
    dans 1109708515:

    dans 1109697190:
    elle n'a l'aire qu'en surface ;-)


    Excellent  ;D
    De la part d'un amateur: chapeau bas Chacha  :o

    P.S: et je suis un amateur averti


    Sans vouloir tirer la couverture à  moi, mais sans moi et mes fautes, la blague n'aurait jamais existé ;D
  • ClicCoolClicCool Membre
    13:12 modifié #23
    dans 1109714428:

    dans 1109708515:

    dans 1109697190:
    elle n'a l'aire qu'en surface ;-)


    Excellent  ;D
    De la part d'un amateur: chapeau bas Chacha  :o

    P.S: et je suis un amateur averti


    Sans vouloir tirer la couverture à  moi, mais sans moi et mes fautes, la blague n'aurait jamais existé ;D


    T'as raison  ptit bras  tout le mérite te revient en fin de compte  ;)
  • odjauodjau Membre
    13:12 modifié #24
    Salut  Chacha,
    Après rapide test, je confirme que l'option bipro fait planter l'appli :(
    Si t'as d'autre version à  tester... je tenterai de trouver un peu plus de temps pour faire des tests plus utile pour toi.

    @+
  • ChachaChacha Membre
    13:12 modifié #25
    dans 1109749001:

    Si t'as d'autre version à  tester... je tenterai de trouver un peu plus de temps pour faire des tests plus utile pour toi.


    Oké.
    Je pense qu'il est temps de refusionner ce thread avec le thread initial:
    http://www.objective-cocoa.org/forum/index.php?topic=675.45

    Car hier soir j'ai updaté MozoDojo en version qui est censée marché en mode bi-pro, et je pense que c'est la dernière beta.

    Merci encore

    +
    Chacha
Connectez-vous ou Inscrivez-vous pour répondre.