yukiregista / ConsensusProj

MIT License
2 stars 0 forks source link

現時点でのメモリと実行時間の計測 #49

Closed yukiregista closed 2 months ago

yukiregista commented 2 months ago

@atsuhmd

taxaの数を変えて、今の時点でのメモリと実行時間がどう変化するかを計測いただきたいです。 (at memory inefficient implementation 360d123bc8b662fc008b8f8987cd9c33441ec17e)

データ

Pruning code

import Consensus
Consensus.c_prune("initial/tree/path", "input/trees/path", K=30)  # Kの値はお任せします...

メモリ計測

Consensus._c_pruning.c_prune の関数内にメモリを測っているところ(report_memory)があります。report_memoryは今のところメモリの使用量をprintしているだけなので、使いやすいように変更していただければと思います(ファイルに書くようにするなど)

実行時間計測

どのくらいの粒度で取るかはお任せします。一応今のc_pruneの中にも計測するコードがあります。

ブランチ

49-measure-memory-time を作ったので、こちらで作業お願いいたします!

atsuhmd commented 2 months ago

memo: mac studio(192GB) 1万taxa 1000treeで実行-> 856程度までbootstrap treeが行ったところでkill

todo

atsuhmd commented 2 months ago

taxa1000

atsu1217@at138:~/ConsensusProj/scripts/prune_booster_size$ cat  prune_booster_size.o26693567
memory used before anything: 0.13 GB
tbe match time with K=30: 189.38187368772924
memory used after tbe_match: 9.36 GB
tbe support time: 27.226564357057214
memory used after tbe_support: 9.36 GB
copying time with K=30: 35.45682112313807
memory used after copying into Python object: 9.86 GB
initial gain computation time with K=30: 1.5038863848894835
pruning process started
pruning time with K=30: 10.281937835738063
Bipartition encoding time: 0.13027955777943134
Load init tree time: 0.049082137644290924
Final Tree Creation time: 0.13890423998236656
memory used after everything: 9.98 GB
svmem(total=405390454784, available=375893577728, percent=7.3, used=26855604224, free=366088298496, active=3782782976, inactive=28310372352, buffers=1249685504, cached=11196866560, shared=196112384, slab=5313097728)
memory used after freeing C memory: 9.97 GB
yukiregista commented 2 months ago

メモリfreeした後全然変わってないのが不思議ですね…

atsuhmd commented 2 months ago

メモリと時間をusr/bin/time -vで測りました, 数字が書いていないところは計算できていないところです. メモリの要求は128GBでやってます.

atsu1217@at139:~/ConsensusProj/scripts/prune_booster_size$ for i in {1000..5000..500};do echo $i; cat prune_booster_size.e*.$i|grep "Maximum resident set";done 1000
    Maximum resident set size (kbytes): 327028
1500
    Maximum resident set size (kbytes): 21658864
2000
    Maximum resident set size (kbytes): 36715584
2500
    Maximum resident set size (kbytes): 55679356
3000
    Maximum resident set size (kbytes): 75675184
3500
4000
4500
5000
atsu1217@at139:~/ConsensusProj/scripts/prune_booster_size$ for i in {1000..5000..500};do echo $i; cat prune_booster_size.e*.$i|grep "Elapsed (wall clock) time ";done 
1000
    Elapsed (wall clock) time (h:mm:ss or m:ss): 3:14.64
1500
    Elapsed (wall clock) time (h:mm:ss or m:ss): 7:34.90
2000
    Elapsed (wall clock) time (h:mm:ss or m:ss): 12:28.38
2500
    Elapsed (wall clock) time (h:mm:ss or m:ss): 19:24.81
3000
    Elapsed (wall clock) time (h:mm:ss or m:ss): 27:59.99
3500
4000
4500
5000
atsu1217@at139:~/ConsensusProj/scripts/prune_booster_size$ 
atsuhmd commented 2 months ago

1000の時計り直してますがメモリ使用量少なすぎておかしいですね...

yukiregista commented 2 months ago

@atsuhmd すみません、メモリのfreeするところで間違っている部分があったのでそこは修正しました( #48 のブランチ)。こちらのブランチにmergeしてもらえると助かります。一方で、今のままのメモリモニタリングはあまり良くなさそうなので別の方法を検討しています...

yukiregista commented 2 months ago

すいません、head は色々ゴミがあるのでこっちのコミット 9adaa154a546c2b470b1cc624b8095c6e9e03f90 をマージしてもらえると良いと思います。が、急ぎじゃなければちょっと待っていただければと思います🙇

yukiregista commented 2 months ago

ちゃんとvalgrindでメモリのチェックしたら結構リークだったりがあったので頑張って解決してます...

yukiregista commented 2 months ago

@atsuhmd 48 -> 49 でPR出したのでいい感じにmergeしてもらえると助かります。

実際に使われているメモリのチェックは、valgrind の massif toolが良さそうな感じでした(確保されているメモリを見るには今のコードが良さそうです)。

とりあえず確認いただいたのでだいぶどのくらいまで行けそうかよくわかったので、PR を mergeだけしてもらったら一旦閉じちゃおうかなと思います!ありがとうございました🙇

yukiregista commented 2 months ago

@atsuhmd mergeありがとうございます!こちらはそれでは一旦閉じます。