日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R做并行计算

發(fā)布時間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R做并行计算 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

R本身雖然只能以單線程的方式運行與計算,但它有大量的包提供了方便而多樣的并行計算方式,支持包括SOCKET、MPI、PVM、NWS等等多種線程溝通方式。最流行最成熟的當然是MPI了,Rmpi包也因此相當受歡迎,在它的基礎(chǔ)上可以實現(xiàn)各種MPI支持的并行編程范式。但要論簡單易用,支持協(xié)議的多樣性,就得說說snow包及其簡化包裝版snowfall包了。snow支持上面提到的四種線程溝通協(xié)議,所以即使沒有安裝MPI或者對MPI了解不多,最基本的也可以直接使用SOCKET方式快速上手。而有了snowfall,更是使得并行化的計算變得如同平常編程一般的簡單。

由于這些包是為R而擴展的,所以跟R的矢量式編程思想能無縫地結(jié)合,只要你的程序已經(jīng)用矢量化語言描述出來(比如R的apply系列函數(shù)或簡單矩陣運算),再移植到snowfall并行計算平臺幾乎就是0成本。

下面通過兩個簡單的函數(shù)來說明snowfall的使用及其性能。在運行測試函數(shù)之前都需要先載入snowfall包,即library(snowfall)

測試函數(shù)1:

foo <- function(i){cat(sprintf('log: item %s', i))return(2^i) } test.base <- function(){x = 1:10sfInit(parallel=TRUE, cpus=2, slaveOutfile='/tmp/snowfall.log')sfExport('foo')res = sfClusterApplyLB(x, fun='foo')sfStop()cat(unlist(res)) }

這個函數(shù)說明了snowfall包的基本使用:

  • 先通過第7行代碼初始化計算集群,參數(shù)分明指明了運行并行模式、使用本地的兩個cpu作運算、定位各slave的日志輸出;
  • 第8行代碼把foo這個函數(shù)發(fā)布到各slave;
  • 第9行代碼把x傳給foo函數(shù)計算,對x這個向量中不同的元素作并行,這里sfClusterApplyLB的作用類似于R里的apply函數(shù);
  • 第10行停止計算集群;
  • 第2行的打印信息會輸出到slaveOutfile指定的日志文件中。
  • 測試函數(shù)2:

    mysort <- function(x){replicate(5, sort(x))return(sort(x)[1:10]) } test.apply <- function(cpus=4){M = matrix(rnorm(10000000), 100, 100000)print('sequence run:')print(system.time(x<-apply(M, 2, mysort)))t = Sys.time() # sfInit(parallel=TRUE, socketHosts=c(rep('balin',2), rep('dwalin',2)))sfInit(parallel=TRUE, cpus=cpus)print(sprintf('%s cpus to be used', sfCpus()))print('parallel time cost:')print(system.time(x<-sfApply(M, 2, mysort)))sfStop()print(paste('total parallel time cost:', Sys.time()-t)) }

    這個函數(shù)展示了一個實際的有一定負載量的計算過程。

  • 第6行生成一個100*100000的測試矩陣M;
  • 第8行對M的每一列應用mysort這個函數(shù),mysort函數(shù)在上面有定義,除了排序之外,還做了一些額外的無用功,增加計算負載,這是單線程計算范式,用于作對比;
  • 第14行進行實際計算,作用跟第8行一樣,不同之處在于這里是利用并行計算范式進行計算,使用的slave數(shù)量由cpus參數(shù)指定;
  • 可以嘗試拿第10行置換第11行,第11行是單機多核并行,第10行是多機多核并行,各機器使用cpu的數(shù)量由socketHosts里該機器名出現(xiàn)次數(shù)而定(balin和dwalin都是機器名);
  • 在使用同樣多的slave的情況下,多機多核通常會比單機多核要慢一點,因為涉及到網(wǎng)絡(luò)IO。
  • 測試函數(shù)2的性能測試如下:

    • 非并行情況下,總耗時31秒多;
    • 2 slave的情況下,總耗時22秒多;
    • 4 slave的情況下,總耗時接近15秒。
    • 補:在sfInit函數(shù)初始化時,設(shè)置type=’MPI’,使用MPI方式并行,4 slave情況下,比SOCKET方式稍慢,耗時17秒多。

    即slave增加4倍時,計算時間減少一半。

    轉(zhuǎn)載于:https://www.cnblogs.com/hukunyu/archive/2011/09/02/2163649.html

    《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的R做并行计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美午夜一区二区三区 | 国产乱码精品一区二区三区中文 | 影音先锋在线观看视频 | 美女三级黄色片 | 一区二区三区免费在线观看视频 | 狠狠做深爱婷婷综合一区 | 亚洲性视频网站 | 久久精品一二三区 | 欧美xxxⅹ性欧美大片 | 极品91 | 黄色大片在线播放 | 国产免费av片在线 | 日本女优网址 | 久热99 | 欧美成人激情视频 | 日本黄色美女视频 | 亚洲国产不卡 | 亚洲小视频在线观看 | 自拍偷拍99| 亚洲黄色av网站 | 国产综合第一页 | 欧美乱强伦 | 中文字幕av久久爽 | 亚洲网站在线免费观看 | 西西444www大胆无视频 | 日韩视频一 | 欧美高清性 | 97人人澡| 涩涩视频网站在线观看 | 人妻激情偷乱频一区二区三区 | 中文字幕丰满乱子伦无码专区 | 亚洲一区二区三区四区在线播放 | 午夜视频1000 | 国产精品17p | 精品国产一区二区三区四 | 欧美久久天堂 | 亚洲 高清 成人 动漫 | 91精品国产闺蜜国产在线闺蜜 | 你懂的在线观看网站 | 九九热视频在线观看 | 中文在线观看高清视频 | 日本一区二区久久 | 日本白嫩的bbw | 国产免费小视频 | 炕上如狼似虎的呻吟声 | 麻豆视频播放 | 国产日韩成人 | 国产真实的和子乱拍在线观看 | 国产成人综合在线 | 日韩av在线免费看 | 古装做爰无遮挡三级聊斋艳谭 | 黑人欧美一区二区三区 | 蜜臀av一区 | 住在隔壁的她动漫免费观看全集下载 | 婷婷第四色 | 俺去射| 亚洲 小说区 图片区 都市 | 欧洲金发美女大战黑人 | 亚洲成人一区 | 美女bb视频 | 天堂中文在线看 | 91大神小宝寻花在线观看 | 激情超碰| 中文字幕在线看片 | 欧美第三页 | 黄色大片在线播放 | 大黑人交xxx极品hd | 日韩天堂在线观看 | 新久草视频 | 一区二区福利视频 | 精品亚洲一区二区三区四区五区高 | 美女啪啪无遮挡 | 国产理论| 农夫色综合 | 亚洲精品久久久久久 | 亚洲一级片 | 国产精品久久久久电影 | 神马午夜51 | 国产干b| 黄色香蕉视频 | 日韩女优在线播放 | 丝袜在线视频 | 精品第一页 | 播放一级黄色片 | 偷偷久久 | 体内精视频xxxxx | 写真福利片hd在线播放 | 日韩不卡一二三区 | 亚洲美女福利视频 | 手机看片日本 | 热久久中文| 欧美专区在线 | 欧美亚洲国产成人 | 黄色不卡av| 国产一区二区黄 | 97超碰超碰| 亚洲琪琪 | 国产精品色网 | 亚洲天堂网在线观看视频 |