我一直在使用multicore
包处理大型对象时遇到问题。基本思路是我正在使用Bioconductor函数(readBamGappedAlignments
)读取大型对象。我有一个文件名的字符向量,并且我一直在使用mclapply
来循环读取这些文件并将它们读取到列表中。该函数大致如下:
objects <- mclapply(files, function(x) {
on.exit(message(sprintf("Completed: %s", x)))
message(sprintf("Started: '%s'", x))
readBamGappedAlignments(x)
}, mc.cores=10)
然而,我一直收到以下错误:Error: serialization is too large to store in a raw vector
。不过,似乎我可以独自读取同样的文件而没有此错误。我在这里找到了有关此问题的提及,但没有解决方法。
如果有任何并行解决方案建议将不胜感激 - 这必须是并行完成的。我可以考虑使用snow,但我有一台非常强大的服务器,拥有15个处理器、每个处理器8个内核和256GB的内存可以完成此任务。我宁愿在这台机器上跨核心进行操作,而不是使用我们的一个集群。
R_len_t
的问题...如果我们可以将其设置为长整型并完成它,那就太好了。 - Vinceforeach
,不过我不是很清楚长向量出现在哪里。如果没有其他办法,你也可以将对象分区,以便通过将每个大约2^30个项目拆分为新列来将长向量映射到矩阵中。 - Iterator