[問題] iteration growing parallel

作者: memphis (讓你喜歡這世界~)   2015-03-30 20:45:00
手上有條蛋白質序列, 每個點都會突變, 遇到K, 切下來, 列出所有可能, 舉例如下
A B1 C1 K E F1
B2 C2 D F2
#### result ####
A B1 C1 K
A B2 C1 K
A B1 C2 K
A B2 C2 K
A B1 C1 D F1
A B2 C1 D F1
A B1 C2 D F1
A B2 C2 D F1
.... F2
....
#### 問題來了 ####
如果一直遇不到 K, 突變點一多(爬到連續20點, 2000萬種組合, 寫出檔案大小達到2.xG)
一個CPU算到沒完
想把他平行化, 我已把function改成可以 一點叫一次
EX
call: function(start=1, tmp_prefix="")
out : A
call: function(start=2, tmp_prefix="A")
out : AB1 AB2
call: function(start=3, tmp_prefix=c("AB1", "AB2"))
out : AB1C1 AB2C1 AB1C2 AB2C2
由以上可見, 如果n點後來個1000萬的out, 就要卡住了
所以我想100萬就拆開, 讓不同的CPU去算
1.請問大家知不知道一些比較方便的package 可以讓我開cpu, 指定哪個cpu算那些input
2.parallel 那種 cl=socket(n), apply 好像不能讓我指定, 應該是行不通
3.RMPI又太兇狠了...太久沒有寫...連環境都還沒有設定好
4.抱歉沒有sample code 可以跑, 所以大家如果有什麼概念用sudo code 我就很感激了
作者: celestialgod (天)   2015-03-30 20:57:00
建議你用Rcpp加速吧,平行效果有限這個組合不是可以直接用expand.grid做嗎?你把有K以後的做截斷不行嗎?
作者: memphis (讓你喜歡這世界~)   2015-03-30 21:25:00
as.vector(outer(c("B1","B2"),c("C1","C2"),paste0))各種組合出來後, 有K結尾的輸出, 沒有的繼續下一輪
作者: celestialgod (天)   2015-03-30 22:33:00
outer一次只能做兩兩組合...會慢不是沒有原因

Links booklink

Contact Us: admin [ a t ] ucptt.com