CRAN任务视图:使用R实现高性能并行计算
这个CRAN任务视图包含一个按主题分组的包列表,这些包对R的高性能计算(HPC)很有用。在这个上下文中,我们定义的“高性能计算”相当松散,就像任何与进一步推动R有关的东西一样:使用编译代码、并行计算(在显式和隐式模式下)、,处理大型对象以及分析。
除非另有说明,否则所有带有超链接的软件包都可以从综合R存档网络(CRAN).
本任务视图中讨论的几个领域正在经历快速变化。请通过电子邮件向维护人员发送此任务视图的添加和扩展建议,或在上面链接的GitHub存储库中提交问题或请求。请参阅贡献页面在中CRAN任务视图回购以获取详细信息。
阿希姆·泽利斯、马库斯·施米德伯格、马丁·摩根、马克斯·库恩、托马斯·拉迪沃耶维奇、乔森·克瑙斯、托比亚斯·韦贝克、郝宇、大卫·罗森博格、马可·埃纳、伊沃·韦尔奇、杰伊·埃莫森、魏·陈、比尔·克利夫兰、罗斯·博伊兰、拉蒙·迪亚兹·乌里亚特、马克·泽利格曼、凯文·乌西、格雷厄姆·杰弗里斯、威尔·朗道、蒂姆·弗鲁特、,Reza Mohammadi、Ralf Stubner、Bob Jansen、Matt Fidler、Brent Brewington和Ben Bolder(以及我可能忘记在这里补充的其他人)对此表示感谢。
这个中央电视台
包支持这些任务视图。它的功能安装视图
和更新.views
分别允许从给定的任务视图安装或更新包;选项仅核心
可以将操作限制为标记为核心下面。
R中的直接支持始于版本2.14.0,其中包括一个新包平行合并(稍微修改)多核和雪。某些类型的群集不由基本包“parallel”直接处理。然而,正如在软件包vignette中所解释的那样雪-类似函数将接受雪包括MPI集群的集群。使用渐晕(“平行”)
查看套餐小品。 The平行该软件包还支持L'Ecuyer等人(2002)提出的多个RNG流,并支持mclapply和snow集群。为R 2.14.0发布的版本包含基本功能:更高级的便利功能计划用于以后的R版本。
并行计算:显式并行
- 几个包提供了并行计算所需的通信层。这个领域的第一个包是Li和Rossini的rpvm,它使用PVM(并行虚拟机)标准和库。rpvm不再进行主动维护,但可以从其CRAN存档目录中获得。
- 近年来,替代MPI(消息传递接口)标准已成为并行计算中事实上的标准。在R中通过Rmpi公司由Yu编写。Rmpi公司该包是成熟的,但仍在积极维护中,可以访问MPI API中的许多功能,以及一些特定于R的扩展。Rmpi公司可以与LAM/MPI、MPICH/MPICH2、Open MPI和Deino MPI实现一起使用。应该注意的是,LAM/MPI现在处于维护模式,新的开发重点是开放式MPI。
- 这个pbdMPI接口包提供了S4类来直接接口MPI,以支持单程序/多数据(SPMD)并行编程风格,该风格对于批处理并行执行特别有用。
- 这个雪Tierney等人的(简单工作站网络)软件包可以使用PVM、MPI、NWS以及直接网络套接字。它通过隐藏通信细节提供了一个抽象层。这个雪地飞行技术软件包提供了容错扩展雪.
- 这个降雪可耐斯的包装为雪。功能可以在顺序或并行模式下使用。
- 这个平行地package通过对并行工作程序的启动和设置提供额外的控制来增强并行程序包。
- 这个foreach公司包允许在不使用显式循环计数器的情况下对集合中的元素进行一般迭代。使用没有副作用的foreach也有助于并行执行循环,这可以通过国防部军事司令部(在单个工作站上使用并行/多核),多斯诺(使用雪,参见上文),doMPI(doMPI)(使用Rmpi公司)程序包,以及do未来(使用未来)包。
- 这个未来该包允许通过futures的抽象实现同步(顺序)和异步(并行)评估,可以通过函数调用实现,也可以通过promises实现。全局变量被自动识别。支持对集合中的元素进行迭代。通过未来框架的并行地图减少调用由包提供未来应用对于base-R的并行版本,应用函数,以及毛皮商用于purrr功能的并行版本。通过并行包可以实现并行化,未来呼叫器通过caller包,以及future.batchtools公司通过batchtools包。
- 这个Rborist公司该包使用OpenMP实用程序来利用随机森林算法中的预测器级并行性,这促进了多核硬件在重新记录数据和确定拆分标准时的有效使用,这两个方面都是算法中的性能瓶颈。
- 这个水该包连接到h2o开源机器学习环境,该环境具有随机林、GBM、GLM(具有弹性网络正则化)和深度学习的可扩展实现。
- 这个随机ForestSRC该包可以使用OpenMP和MPI进行随机森林扩展,适用于生存分析、竞争风险分析、分类和回归
- 这个parSim参数该软件包可以在本地和HPC集群上使用一个或多个内核进行模拟研究。
- 这个qsub(qsub)包可以提交在gridengine集群上运行的命令。
- 这个米莱包是一个用于本地或分布式异步代码评估的最低限度框架,实现了在完成时自动解析的future,构建在高性能的基础上纳诺奈克NNG C消息传递库绑定。这个全体船员程序包扩展米莱具有自动缩放、中央管理器和用于各种平台和服务的插件系统。
- 这个秃鹰该软件包可以通过以下方式与Condor HPC安装交互
ssh标准
传输文件和访问远程计算作业。
并行计算:隐式并行
- Tierney的pnmath包(链接)使用最新编译器(如gcc 4.2或更高版本)的OpenMP并行处理指令进行隐式并行,将许多内部R函数替换为可以使用多个内核的替换函数,而无需用户发出任何显式请求。备用pnmath0包使用Pthreads为更新的编译器不可用的环境提供了相同的功能。类似的功能有望“最终”集成到R中。
- Jamitzky的轻快套餐在useR上展出!2008 (幻灯片)并使用Fortran为OpenMP提供了另一个接口。代码仍然是alpha前版本,可以从GoogleCode项目中获得蹦极.R-Forge项目蹦极已启动,但还没有包。
- 这个RhpcBLASctl公司包检测可用BLAS内核的数量,并允许显式选择内核的数量。
- 这个目标程序包及其前身公鸭关注R的管道工具包与制造商每个都构造了工作流的有向非循环图表示,并跨
未来
工人。
- 这个可弯曲的软件包通过加载BLAS/LAPACK库来管理它们,如果是FlexiBLAS,则可能会进行切换(链接)使用。
并行计算:网格计算
- Grose的multiR软件包在useR!2008年,但尚未发布。它可以在网格计算平台上提供一个雪花般的框架。
- 这个biocep-distrib公司中国的项目为本地、网格或云计算提供了一个基于Java的框架。它正在积极发展。
并行计算:Hadoop
- 这个RHIPE公司由Saptarshi Guha启动的软件包提供了R和Hadoop之间的接口,用于使用大数据的Divide and Recombine方法完全从R内部分析大型复杂数据。
- Revolution Analytics的rmr包还为Map/Reduce编程框架提供了R和Hadoop之间的接口(链接)
- Long的一个相关包segue包允许在Amazon的Elastic Map Reduce(EMR)上轻松执行令人尴尬的并行任务。(链接)
- 这个RP协议Buf该软件包为谷歌的语言中立、平台中立、可扩展的序列化结构化数据机制提供了一个接口。这个包可以在R代码中使用,以从分布式MapReduce设置中的其他系统读取数据流,在分布式MapReduce设置中,数据被序列化并在任务之间来回传递。
并行计算:随机数
- 用于并行计算的随机数生成器可通过勒克耶程序包第一流程序包西特莫包以及dqrng公司包裹。
- 这个doRNG公司package提供了执行可复制的并行foreach循环的功能,使用由package rstream生成的独立随机流,适用于不同的foreach后端。
并行计算:资源管理器和批调度程序
- 作业调度工具包允许管理并行计算资源和任务。slurm(Simple Linux Utility for Resource Management)程序集与MPI配合良好,可以使用rslurm公司包裹。(链接)
- 秃鹰工具箱(链接)威斯康星州大学麦迪逊分校已使用R,如下所述R新闻文章.
- Knaus的sfCluster包可以与降雪. (链接)但目前仅限于LAM/MPI。
- 这个批处理Hoffmann的包可以将并行计算请求发送到集群并收集结果。
- 这个批处理作业该包提供Map、Reduce和Filter变体,用于管理PBS/Torque、LSF和Sun Grid Engine等批处理计算系统上的R作业及其结果。还支持多核和SSH系统。这个批量实验该包使用一个抽象层对其进行了扩展,以运行统计实验。包裹批处理工具是两者的继承者/扩展者。
- 这个流动器包提供了一种分散式方法,通过简单的data.frames作为输入将作业列表(包括依赖项)提交给计算集群。它支持LSF、SGE、Torque和SLURM。
- 这个集群q包通过一行代码在LSF、SGE和SLURM上以作业的形式发送函数调用,而不使用网络安装存储。它还支持通过SSH使用远程集群。
并行计算:应用
- 这个插入符号Kuhn的软件包可以使用各种框架(MPI、NWS等)对预测模型进行并行交叉验证和自举表征。
- 这个马诺瓦Wu在Bioconductor上的包装可以使用雪和Rmpi公司用于微阵列实验的分析。
- 这个pvclust(群集)铃木和Shimodaira的套装可以使用雪和Rmpi公司通过多尺度引导实现分层聚类。
- 这个tm(tm)Feinerer包装可以使用雪和Rmpi公司用于并行文本挖掘。
- 这个varSelRF(可变选择射频)Diaz-Uriarte的包可以使用雪和Rmpi公司通过随机森林并行使用变量选择。
- 这个multtest公司Pollard等人关于Bioconductor的包装可以使用雪,Rmpi公司或rpvm用于基于重采样的多假设测试。
- 这个匹配Sekhon的多元和倾向得分匹配包bn学习Scutari的贝叶斯网络结构学习包潜伏网Krivitsky和Handcock为潜在位置和集群模型打包佩珀尔由Porzelius和Binder开发的预测误差并行估计软件包奥洛卡Fernandez-Palacin和Munoz Marquez的运筹学位置分析包阿尔格努德Mebane和Sekhon为使用导数进行遗传优化而开发的软件包affy段落Schmidberger、Vicedo和Mansmann为Affymetrix微阵列的并行归一化提供的包,以及彪马Pearson等人的软件包将不确定性传播到标准微阵列分析中,例如差异表达,所有人都可以使用雪使用支持的MPI、PVM、NWS或套接字协议之一进行并行化操作雪.
- 这个斗牛场软件包使用Rmpi公司用于使用WinBUGS对多个MCMC链进行分布式计算。
- 这个xgboost公司Chen等人的软件包是一个优化的分布式梯度增强库,旨在实现高效、灵活和便携。相同的代码在主要的分布式环境上运行,如Hadoop、SGE和MPI。
- 这个dclone(数据克隆)该软件包提供了一种全局优化方法和模拟退火的变体,它利用贝叶斯MCMC工具获得MLE点估计和标准误差,使用低层函数实现复杂模型的最大似然估计过程,使用数据克隆和贝叶斯马尔可夫链蒙特卡罗方法用于JAGS、WinBUGS和OpenBUGS;通过雪包裹。
- 如今,许多软件包都可以使用平行包裹。一个例子是请.
- 这个pbapply(应用程序)包中为矢量化的R函数提供了一个进度条
\*应用
家庭,并支持几个后端。
- 这个模拟。差异处理该软件包并行模拟和估计多维Itóand Stratonovich随机微分方程。
- 这个珊瑚礁Allaire等人的软件包提供了一个高级神经网络API。它的开发重点是实现卷积网络、递归网络、两者的任意组合以及自定义神经网络架构的快速实验。
- 这个mvnfast公司使用sumo随机数生成器并行生成多元和正态分布。
- 这个rxode2随机(已存档)使用西特莫包来并行生成截断或非截断的多元正态分布。pacakge还生成了许多其他并行的常见分布(如二项式分布、t分布等)。
- 这个rx代码2使用并行处理(通过
开放式多媒体播放器
)用于更快地求解多个单元上的常微分方程(ODE)身份证件
)并可以为每个ODE模拟问题生成随机数(使用支持包自动完成rxode2随机(已存档)).
- 这个nlmixr2(nlmixer2)使用来自的并行ODE求解
rx代码2
并行求解非线性混合效应模型(用于算法“塞姆”
).
并行计算:GPU
- rgpu包(见下面的链接)旨在使用GPU加速生物信息学分析。
- 这个gcbd公司该包实现了BLAS和GPU的基准测试框架。
- 这个开放运算语言该包提供了一个从R到OpenCL的接口,允许硬件和供应商中立的接口到GPU编程。
- 这个张量流Allaire等人的软件包提供了从R中访问完整TensorFlow API的途径,该API支持使用数据流图进行数值计算。灵活的体系结构允许用户使用单个API将计算部署到桌面、服务器或移动设备中的一个或多个CPU或GPU。
- 这个tf估计器Tang等人的软件包提供了一个高级API,它提供了许多不同模型类型的实现,包括线性模型和深层神经网络。它还提供了一个灵活的框架,可以免费将任意新模型类型定义为具有TensorFlow分布式能力的自定义估值器。
- 这个BDgraph(BDgraph)该软件包使用OpenMP和C++实现的并行采样算法,为多元连续、离散和混合数据的无向图形模型中的贝叶斯结构学习提供统计工具。
- 这个ssgraph(ssgraph)该软件包在无向图形模型中使用多变量连续、离散和混合数据的尖峰和板先验提供贝叶斯推理。包的计算密集型任务通过C++使用OpenMP。
- 这个GPU矩阵包可以将计算卸载到GPU,同时提供
矩阵
包裹。
大内存和内存外数据
- 这个biglm公司Lumley的软件包使用增量计算提供
lm()
和glm()
存储在R主存储器之外的数据集的功能。
- 这个ff(关闭)Adler等人的包提供了对太大而无法加载到内存中的数据集的基于文件的访问,以及许多高级函数。
- 这个大存储器Kane和Emerson的包允许在内存(以及通过文件)中存储矩阵等大型对象,并使用外部指针对象引用它们。这允许从R进行透明访问,而不会违反R的内部内存限制。同一台计算机上的几个R进程也可以共享大内存对象。
- 大量数据库包和类似数据库的包(例如平方英尺格罗森迪克和数据表作者Dowle)也有潜在的兴趣,但这里不作评论。
- 这个MonetDB。R(右)包允许R访问MonetDB面向列的开源数据库系统作为后端。
- 这个拉菲该包提供了快速访问csv或固定宽度格式的大型ASCII文件的方法。
- 这个双稳态该包还通过内存映射访问对文件支持的大矩阵进行操作,并提供了几种矩阵操作、PCA、稀疏方法等。。
- 这个磁盘.frame该包利用其他几个包为大于RAM的数据集提供高效的访问和操作。
- 这个箭头该软件包提供了可移植的Apache Arrow内存格式以及不同文件格式的阅读器,其中可以包括对内存外处理和流的支持。
编译代码的更简单接口
- 这个内联Sklyar等人的包简化了向R中添加C、C++或Fortran代码的过程。它负责编译、链接和加载存储为R字符串的嵌入式代码段。
- 这个卢比Eddelbuettel和Francois的包提供了许多C++类,使得将R对象转换为C++函数(或转换回C++函数)更加容易,并且RInside公司由同一作者编写的包允许将R本身轻松嵌入到C++应用程序中,以实现更快、更直接的数据传输。
- 这个Rcpp并行由Allaire等人打包英特尔线程构件和微型线程库。与一起卢比RcppParallel使编写安全、高性能、并发执行的C++代码以及在R和R包中使用该代码变得容易。
- 这个rJava语言Urbanek的包提供了一个与Java类似的低级接口
.Call()
C和C++的接口。
- 这个网状的Allaire的包提供了Python模块、类和函数的接口。它允许R用户访问许多高性能Python包,例如张量流和tf估计器在R内。
包装普罗维斯,提供,教授,GUIProfiler(GUIProfiller),proftools软件、和围裙总结并可视化Rprof公司
用于分析的接口。这个轮廓包读取和写入分析数据,并在文件格式之间进行转换,例如批准
谷歌和Rprof公司
. The第xrpr页
命令行工具在Linux或Windows上为给定的R进程实现配置文件采样,它可以在分析编译代码的同时分析R代码。
CRAN包
核心: | Rmpi公司,雪. |
常规: | 围裙,箭头,批处理,批量实验,批处理作业,批处理工具,BDgraph(BDgraph),比格尔姆,大存储器,大statsr,bn学习,插入符号,集群q,秃鹰,全体船员,数据表,dclone(数据克隆),磁盘.frame,do未来,国防部军事司令部,doMPI(doMPI),doRNG公司,多斯诺,dqrng公司,公鸭,ff(关闭),屈膝肌,流动器,foreach公司,毛皮商,未来,未来应用,future.batchtools公司,未来呼叫器,gcbd公司,GPU矩阵,GUI档案器,水,内联,珊瑚礁,拉菲,潜伏网,匹配,米莱,MonetDB。R(右),mvnfast公司,纳诺奈克,nlmixr2(nlmixer2),开放运算语言,奥洛卡,平行地,parSim参数,pbapply(应用程序),pbdMPI接口,佩珀尔,请,提供,轮廓,专业人员,proftools软件,普罗维斯,pvclust(群集),qsub(qsub),随机ForestSRC,Rborist公司,卢比,Rcpp并行,网状的,阿尔格努德,RhpcBLASctl公司,RInside公司,rJava语言,勒克耶,RP协议Buf,rslurm公司,第一条溪流,rx代码2,模拟。差异处理,西特莫,降雪,雪地飞行技术,平方英尺,ssgraph(ssgraph),目标,张量流,tf估计器,tm(tm),varSelRF(可变选择射频),xgboost公司. |
已存档: | rxode2随机. |
相关链接
其他资源