作者celestialgod (攸蓝)
看板R_Language
标题Re: [问题] iteration growing parallel
时间Mon Mar 30 22:14:41 2015
※ 引述《memphis (让你喜欢这世界~)》之铭言:
: 手上有条蛋白质序列, 每个点都会突变, 遇到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 我就很感激了
花了一点时间写成Rcpp
我认为这样的做法快又有效。
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.225.214.51
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1427724883.A.3FD.html
1F:推 memphis: 感恩 让我copy下来研究修改一下 (因为例子是简化的XD) 03/30 22:31
code连结:
http://pastebin.com/JfFSYcuj (比较友好的介面)
另外,提醒一件事,combns_f算出来的result是int,所以很省记忆体
你如果转成character matrix,该矩阵所使用的记忆体会多整数一倍。
2F:推 memphis: 感谢, 在数字上操作才是正确的, 列出所有可能再参照回去 03/31 00:56
3F:→ memphis: 再问一下 我看了我的资料点 所有可能乘起来约10的11次方 03/31 00:57
4F:→ memphis: 这是R可以操作的范围吗? 还是这宣告了此路不通? 03/31 00:58
是可以操作的范围,可是ram要够大
5F:推 memphis: 好.. Ram有2T 我再拼拼看.. 03/31 01:12
我发现了一点小错,更正了一下,并且增加一个直接output character matrix的方法
而且省略做转换、以及产生整数矩阵的时间、记忆体,可以比较有效率。
※ 编辑: celestialgod (36.225.214.51), 03/31/2015 14:55:21