29 lines
2.2 KiB
Plaintext
29 lines
2.2 KiB
Plaintext
<christoffer> Alexander og jeg skrev noget af vores bachelorprojekt om til C her i fredags.
|
|
<christoffer> Man skal virkelig passe på sine hukommelsesallokeringer.
|
|
<Jmaa> Ja, helt klart.
|
|
<christoffer> Jeg fandt et memory leak, der lækkede 100 MiB hukommelse i sekundet.
|
|
<Jmaa> Hvilken del blev C-ificeret?
|
|
<Jmaa> Damned
|
|
<christoffer> Årsagen var at vi gav et objekt med tilbage til Python uden at dekrementere dets ref-count, så fortolkeren stadig troede at nogen havde brug for det.
|
|
<christoffer> Den del af spillogikken, der tjekker om træk er gyldige.
|
|
<christoffer> Det bliver kaldt ret mange tusinde gange pr. spil, så vi tænkte at der måske kunne være lidt optimering at hente i at omskrive det til C.
|
|
<Jmaa> Ok, så I har ikke selv brugt alloc og free. Det er alligevel noget.
|
|
<christoffer> Metoden selv blev 7 gange hurtigere!
|
|
<Jmaa> Wow!
|
|
<christoffer> Jo. Det endte vi også med at gøre.
|
|
<christoffer> Vi havde brug for lister af variabel størrelse. Det endte med en struct med et "size" felt og et "list" felt.
|
|
<Jmaa> Inkluderer det speedup, frem og tilbagen mellem C og python?
|
|
<christoffer> Det burde det gøre, ja!
|
|
<Jmaa> Gjorde det nogen stor effekt for hvor hurtigt I kan evaluere?
|
|
<christoffer> Jeg tror ikke at der er særligt meget "frem og tilbage"-stads. Det ser ud til at det kode man skriver bliver kastet ret direkte ind i fortolkeren.
|
|
<christoffer> Det gjorde en stor forskel for når vi laver 1-ply.
|
|
<christoffer> "ply" er hvor mange træk man kigger fremad.
|
|
<christoffer> Så kun at kigge på det umiddelbart næste træk er 0-ply, hvilket er det vi har gjort indtil nu
|
|
<christoffer> 1-ply var for langsomt. Det tog ca. 6-7 sekunder at evaluere ét træk.
|
|
<christoffer> Alexander lavede lidt omskrivninger, så TensorFlow udregnede det hurtigere og fik det ned på ca. 3-4 sekunder *pr. spil*.
|
|
<christoffer> Så skrev vi noget af det om til C, og nu er vi så på ca. 2 sekunder pr. spil med 1-ply, hvilket er ret vildt.
|
|
<christoffer> Det er så godt at Python-fortolkeren kan udvides med C!
|
|
<christoffer> caspervk, kan I optimere jeres bachelorprojekt med et par C-moduler?
|
|
<Jmaa> Det er en hel lille sektion til rapporten det der.
|
|
<christoffer> Yeah. Kopierer bare det her verbatim ind.
|