r语言系统计算上是奇异的_R语言实现并行计算

a5723ba5a4f42a103fd16fa1b7a83dcf.gif

Python作为多线程的编程语言在并行方面相对于R语言有很大的优势,然而作为占据统计分析一席之地的R语言自然不能没有并行计算的助力。那么我们来看下在R语言中有哪些并行的包:隐式并行:OpenBLAS,Intel MKL,NVIDIA cuBLAS等;显性并行:parallel(主打lapply应用)、foreach(主打for循环)、SupR、还有利用GPU的办法(gpuR)。所谓显式并行也就是基于并行的编程语言编译的程序;隐式并行是基于串行程序编译的并行计算。当然,在R语言核心功能中也是带有了相关的并行的计算基础包parallel。今天就给大家介绍下这个基础并行包的具体应用。

我们不需要再安装这个包,可以直接进行相关的计算。首先我们看下里面的几个核心的函数:

1. detectCores() 发现PC终端有多少个核。所谓核就是CPU的性能体现,越多越好。实例:

library(parallel)cl.cores #发现可用核数

2. makeCluster() 初始化我们需要用到的核数。其中type参数有两种PSOCK适用所有操作系统,FORK适用unix/max,实现内存共享以及节省内存。实例:

cl "cl.cores", 2),type="PSOCK")

3. clusterExport() 将变量载入并行的环境中。实例:

xx=1:10clusterExport(cl, "xx")#读入变量数据

4. clusterEvalQ(,{code})  将包或者代码直接载入并行环境。实例:

clusterEvalQ(cl,{library(ggplot2);xy=1:10})

12bdf769e8df078007e5694bd9b737bf.png

clusterCall(cl, function(y) xy + y, 2:10)

8baf74cc24ffc191f0c20f4564d69956.png

5. clusterCall() 在并行环境中,一次运行过程在各节点的值。clusterMap便可以直接运行所用的值,并以列表形式展示所有结果。实例:

clusterCall(cl, function(y) xx + y, 2:10)

eb0b60ff2267c0aa52fb708e9921521c.png

clusterMap(cl,function(y) xx + y,2:10)

2507cf9451721d057e9a44c39da44802.png

6. parLapply(), parSapply(), 和 parApply() 和函数 lapply, sapply 及 apply一一对应。可以直接将自定义的函数引入并行环境。实例:

parSapply(cl,2:10, function(y) xx + y)

bcccb97c80b9855872f02c9f1b99135e.png

7. clusterApply() 类似parLapply 系列,可以直接运行得到所有结果,输出列表格式。clusterApplyLB()便是对其的优化,具体的优化模式我们就不赘述了。实例:

clusterApply(cl,2:10, function(y) xx + y)

4cd4a327617e981511486db3d8b8a6c4.png

8. do.call() 针对某个数据集执行指定的函数功能。实例:

res=clusterApply(cl,2:10, function(y) xx +y)do.call('rbind',res)

b3af7710b0492a806659d4ee1e3a6a04.png

9. stopCluster() 关闭集群。实例

stopCluster(cl)

以上便是parallel包的全部功能函数,其实并行真正解决的是重复性工作的情况,在P值的计算中应用比较广泛。然而对于递归计算需要一定的优化才能使用并行计算,不然不一定有单机的效率高。

欢迎互相学习交流! 

edd3b10c0ef563572006082ae72811de.png

812b48526fbd40cc990e6f96cbb647ef.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cansina 目录_dirmap - 一个高级web目录、文件扫描工具-华盟网

Dirmap一个高级web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑需求分析经过大量调研,总结一个优秀的web目录扫描工具至少具备以下功能:并发引擎能使用字典能纯爆破能爬取页面动态生成字典能fuzz扫描自定义请求自定义响应结…

唯有自己变得强大_物竞天择,适者生存,唯有强大自己,方能百毒不侵

物竞天择,适者生存,这是亘古不变的道理。面对生活中的困难,人生路上的挫折,我们只有足够坚强,足够勇敢,足够强大,才能战胜这一切。人活着要明白,你所有的负面,都源于你的…

树莓派c语言运行_树莓派完成简单的编程(四)

在上一篇文章中,我们学习了Vi文本编辑器,那么用它可以实现什么功能呢?树莓派python以及c语言编程这里我选择了最简单和很流行的两种编程语言:C语言和Python。实现最简单的功能,输出hello world。Python编程简介Python是…

python中的与或非_「Python基础」 While 循环语句

Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:while 判断条件:执行语句……执行语句可以是单个语句或语句块。判断条件可以是任何表达式&…

go定时器 每天重复_Go语言学习基础-定时器、计时器

Timer计时器如果希望在将来的某个时间点执行Go代码,或者在某个时间间隔重复执行Go代码,使用Go内置的timer和ticker功能。先看定时器timer,然后再看计时器ticker。定时器代表未来的单个事件。告诉定时器需要等待多长时间,它返回一个…

html类名定义规则_HTML入门笔记1

HTML 是谁发明的?Tim Berners-LeeHTML起手式&#xff1a;HTML起手式 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

怎样检测mysql5.5安装成功_64位wiN7系统中装配MySQL5.5.17(测试安装成功哦!)

64位wiN7系统中安装mysql5.5.17(测试安装成功哦&#xff01;&#xff01;~~)下载地址&#xff1a;[url] http://www.mysql.com/downloads/mysql/[/url]下载的话需要登录,你只需按照要求注册一个账号,然后下载即可.我下载的是mysql-5.5.17-winx64.msi版本.安装步骤:Step 1. Mysq…

xcode 创建模拟器_Xcode编译WebKit

下载WebKit源码1)进入https://webkit.org/2)点击页面的 Get Started 进入新页面&#xff0c;如下图所示3)点击 Getting the code 进入新页面&#xff0c;如下图所示4)在源码下载页面&#xff0c;有多种下载方式&#xff0c;包括直接下载代码zip包&#xff0c;通过SVN下载&#…

mysql iscsi_iscsi共享存储的简单配置和应用

1、环境介绍SCSI(Small Computer System Interface)是块数据传输协议&#xff0c;在存储行业广泛应用&#xff0c;是存储设备最基本的标准协议。从根本上说&#xff0c;iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法&#xff0c;ISCSI使用以太网协议传送SCSI命…

request mysql 接口_TP5接口开发

开启debug调试模式(正式上线建议关闭)config.php// 应用调试模式app_debug > true,设置输出类型index.phpnamespace app\index\controller;class Index{public function index(){$data [name > steven, age > 24];return json([code > 0, msg > 操作成功, data…

命令行进入指定目录_VIM学习笔记 操作目录(Manipulate Directory)

在目录间移动使用以下命令&#xff0c;可以显示当前所在的目录&#xff1a;:pwd使用以下命令&#xff0c;在Linux下可以进入HOME目录&#xff0c;而在Windows下则显示当前所在目录&#xff1a;:cd使用以下命令&#xff0c;可以进入指定的目录&#xff1a;:cd D:tepm使用以下命令…

koa2 mysql 中间件_Koa2第二篇:中间件

第一篇介绍了生成器目录设计。xyzcoding&#xff1a;Koa2第一篇&#xff1a;详解生成器​zhuanlan.zhihu.com接下来学习Koa2的中间件。Koa2本身只能算一个极简的HTTP服务器&#xff0c;自身不内置中间件&#xff0c;但是提供中间件内核。中间件是Koa2的核心&#xff0c;因此需要…

rs485数据线接反_终于有人把RS485通讯的正确接线方式讲明白了,网友:这下好办了...

RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS485使得廉价本地网络以及多支路通信链路的配置成为可能。那么RS485通讯的正确…

骑马与砍杀python代码_GitHub - yunwei1237/scottish-fold: 一个关于骑马与砍杀的剧本制作工具...

scottish-fold一个关于骑马与砍杀的剧本简单快速的制作工具前言​在很久以前的时候&#xff0c;也就是刚开始玩骑砍的时候就想着能够制作一个自己的剧本&#xff0c;用于书写自己想要的故事。当我怀着远大的梦想去这么做的时候才发现&#xff0c;原来制作剧本没有自己想象的那么…

java object强制类型转换_scala object 转Class Scala强制类型转换

asInstanceOf[T]将对象类型强制转换为T类型。还是由于泛型存在类型擦除的原因,1.asInstanceOf[String]在运行时会抛出ClassCastException异常&#xff0c;而List(1).asInstanceOf[List[String]]将不会。packageresti.webimportorg.springframework.beans.factory.annotation.Au…

java毛玻璃_模糊效果(毛玻璃效果)

模糊效果(毛玻璃效果)效果演示&#xff1a;1. 使用iOS自带的 UIImageImageEffects 文件文件中有这么几个方法&#xff1a;- (UIImage *)applyLightEffect;- (UIImage *)applyExtraLightEffect;- (UIImage *)applyDarkEffect;- (UIImage *)applyTintEffectWithColor:(UIColor *)…

java程序崩溃怎么重启_android 异常崩溃后 重启app(进程守护方式实现)

【实例简介】【实例截图】【核心代码】package com.sunfusheng.daemon.sample;import android.content.ComponentName;import android.content.Intent;import android.os.Looper;import android.util.Log;import com.blankj.utilcode.util.AppUtils;import com.sunfusheng.daem…

python 库 全局变量_python局部变量和全局变量global

当你在函数定义内声明变量的时候&#xff0c;它们与函数外具有相同名称的其他变量没有任何关系&#xff0c;即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块&#xff0c;从它们的名称被定义的那点开始。使用局部变量例7.3 使用局部…

java精确测量文本高度_基于文本精确计算UITableViewCell的高度

我正在开发一个ios应用程序&#xff0c;并使用autolayout我正在尝试创建一个具有不同行高的表视图 .原型单元的布局如下&#xff1a;我有一个主单元格(黑色)里面有一个UIView(红色)&#xff0c;里面有一个UILabel(蓝色)我添加的Autolayout约束如图所示&#xff1a;The UIView h…

java == hashcode,java中==和equals和hashCode的区别

java中和equals和hashCode的区别 的作用&#xff1a;基本类型&#xff1a;比较的就是值是否相同引用类型&#xff1a;比较的就是地址值是否相同(确切的说&#xff0c;是堆内存地址)equals 的作用:引用类型&#xff1a;默认情况下&#xff0c;比较的是地址值。public boolean eq…