Closed yukiregista closed 2 months ago
memo: mac studio(192GB) 1万taxa 1000treeで実行-> 856程度までbootstrap treeが行ったところでkill
todo
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
メモリfreeした後全然変わってないのが不思議ですね…
メモリと時間を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$
1000の時計り直してますがメモリ使用量少なすぎておかしいですね...
@atsuhmd すみません、メモリのfreeするところで間違っている部分があったのでそこは修正しました( #48 のブランチ)。こちらのブランチにmergeしてもらえると助かります。一方で、今のままのメモリモニタリングはあまり良くなさそうなので別の方法を検討しています...
すいません、head は色々ゴミがあるのでこっちのコミット 9adaa154a546c2b470b1cc624b8095c6e9e03f90 をマージしてもらえると良いと思います。が、急ぎじゃなければちょっと待っていただければと思います🙇
ちゃんとvalgrindでメモリのチェックしたら結構リークだったりがあったので頑張って解決してます...
@atsuhmd 48 -> 49 でPR出したのでいい感じにmergeしてもらえると助かります。
実際に使われているメモリのチェックは、valgrind の massif toolが良さそうな感じでした(確保されているメモリを見るには今のコードが良さそうです)。
とりあえず確認いただいたのでだいぶどのくらいまで行けそうかよくわかったので、PR を mergeだけしてもらったら一旦閉じちゃおうかなと思います!ありがとうございました🙇
@atsuhmd mergeありがとうございます!こちらはそれでは一旦閉じます。
@atsuhmd
taxaの数を変えて、今の時点でのメモリと実行時間がどう変化するかを計測いただきたいです。 (at memory inefficient implementation 360d123bc8b662fc008b8f8987cd9c33441ec17e)
データ
all_trees.tre
に1000個の10000taxaの木が入っています。all_trees.tre
の一行目をall_trees1.tre
に取り出してあるので、これをひとまず使ってください。Pruning code
メモリ計測
Consensus._c_pruning.c_prune の関数内にメモリを測っているところ(
report_memory
)があります。report_memory
は今のところメモリの使用量をprint
しているだけなので、使いやすいように変更していただければと思います(ファイルに書くようにするなど)実行時間計測
どのくらいの粒度で取るかはお任せします。一応今の
c_prune
の中にも計測するコードがあります。ブランチ
49-measure-memory-time
を作ったので、こちらで作業お願いいたします!