Alcuni risultati con LazySMP


Questa pagina ha una gerarchia - Pagina madre:Programmazione

Home Forum Programmazione Alcuni risultati con LazySMP

Questo argomento contiene 33 risposte, ha 8 partecipanti, ed è stato aggiornato da  sasachess 1 anno, 2 mesi fa.

Stai vedendo 4 articoli - dal 31 a 34 (di 34 totali)
  • Autore
    Articoli
  • #10287
    Andrea
    Andrea
    Membro

    Ho sistemato un paio di bug relativi alla ricerca parallela e semplificato il codice: ora se un thread diverso da quello principale completa la ricerca prima degli altri non li interrompe ma aspetta che il thread principale finisca.
    Questi i risultati di due test da 1000 partite ognuno con 8 thread vs 1. Uno a 60″+0.1″ e l’altro a 3’+1″. Anche triplicando il tempo, se consideriamo i margini di errore, il LazySMP continua a funzionare molto bene.
    Sono state giocate anche 1000 partite a 60″+0.1″ 4T vs 1T e il risultato è stato del 70.5% (+152.7).

    Dopo l’IGT vorrei provare un altro schema per gli incrementi della profondità rispetto a quello riportato nel messaggio iniziale, per vedere se funziona meglio con un numero elevato di thread.

    Riporto anche il risultato dello stesso test a 60″ di qualche mese fa.

    60"+0.1"
    Score of Chiron8T vs Chiron1T: 566 - 21 - 413  [0.772] 1000
    ELO difference: 212.37 +/- 16.50
    
    3'+1"
    Score of Chiron8T vs Chiron1T: 519 - 23 - 458  [0.748] 1000
    ELO difference: 189.00 +/- 15.53
    
    60"+0.1"
    
       # PLAYER        : RATING    POINTS  PLAYED    (%)
       1 Chiron8T      :  149.7    1752.0    2500   70.1%
       2 Chiron1T      :    0.0     748.0    2500   29.9%
    
    
    #10290

    sasachess
    Partecipante

    Ho sistemato un paio di bug relativi alla ricerca parallela e semplificato il codice: ora se un thread diverso da quello principale completa la ricerca prima degli altri non li interrompe ma aspetta che il thread principale finisca.

    Ciao Andrea, posso chiederti perché hai adottato quest’ultima soluzione?
    In gogobello non ho differenze tra i thread principale/helper, il primo che termina è quello buono. Non mi sembra di avere bug, ma non si sa mai.. per questo ti chiedo che difficoltà hai incontrato con questa soluzione?
    Magari ne parliamo direttamente all’IGT! 😉

    #10291
    Andrea
    Andrea
    Membro

    Ciao Andrea, posso chiederti perché hai adottato quest’ultima soluzione?

    Solo per semplificare. Penso che le due soluzioni siano sostanzialmente equivalenti. Potrei fare dei test per verificarlo, dopo l’IGT.

    Magari ne parliamo direttamente all’IGT! ;)

    Certo 🙂

    #10348

    sasachess
    Partecipante

    Condivido con voi il mio stupore nello scoprire che l’avere un’unica innocente variabile globale per contare i nodi, limitava fortemente le prestazioni del mio lazySMP al salire dei thread allocati. L’ho scoperto con l’ottimo tool della Intel: VTune Amplifier XE 2017. Anche se poi, chiacchierando con Andrea all’IGT è emerso che è cosa risaputa e scontata (non lo era per me e per la mia scarsa esperienza di programmazione multithread). 🙂

    Altra considerazione che vorrei condividere circa la mia esperienza… il lazySMP tira fuori il meglio e il peggio dalla vostra hash table. Se avete un baco sulle hash, lui lo evidenza sfacciatamente.

    Terza e ultima condivisione. La PVS non mi funzionava per un baco clamoroso sul probe della hash.
    In pratica, su probe a buon fine, aggiornavo l’age dell’entry. Peccato che uso un sistema di lockless, per cui la chiave di accesso all’entry è “key” XOR “data”. Modificando l’age in “data”, invalidavo di fatto l’entry.. con risultati disastrosi sulla PVS!
    Stupido, ma non immediato da trovare.

Stai vedendo 4 articoli - dal 31 a 34 (di 34 totali)

Devi essere loggato per rispondere a questa discussione.

© 2017 G 6 Tutti i diritti riservati - Buon divertimento!

By continuing to use the site, you agree to the use of cookies. more information

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi