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.pswp.cn/news/383035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383035.shtml
英文地址,請注明出處:http://en.pswp.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是…

mysql 讀寫引擎_揭秘MySQL存儲引擎spider

轉自:興趣部落?buluo.qq.com導讀: Spider是為MySQL/MariaDB開發的一個特殊引擎,具有內嵌分片功能。現在它已經被集成到MariaDB10.0及以上版本中,作為MariaDB的一個新的主要性。Spider的主要功能是將數據分散到多個后端節點&#…

python中的與或非_「Python基礎」 While 循環語句

Python 編程中 while 語句用于循環執行程序,即在某條件下,循環執行某段程序,以處理需要重復處理的相同任務。其基本形式為:while 判斷條件:執行語句……執行語句可以是單個語句或語句塊。判斷條件可以是任何表達式&…

lamp mysql大小限制_LAMP 調優之:MySQL 服務器調優

關于 MySQL 調優有 3 種方法可以加快 MySQL 服務器的運行速度,效率從低到高依次為:替換有問題的硬件。對 MySQL 進程的設置進行調優。對查詢進行優化。替換有問題的硬件通常是我們的第一考慮,主要原因是數據庫會占用大量資源。不過這種解決方…

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…

mysql主從虛擬機_虛擬機centos7Mysql實現主從配置

環境搭建在虛擬機上和創建兩個一模一樣的centos7系統&#xff0c;并安裝相同版本的mysql(可以先創建一個再克隆)在master上操作登錄mysqlmysql -u root -p使用mysqluse mysql;創建用戶CREATE USER lystbc1% IDENTIFIED BY Lys135426tbc;給用戶授權GRANT REPLICATION SLAVE ON *…

怎樣檢測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…

django和mysql寫注冊_Django電商項目---完成注冊頁面和用戶登錄

完成基本的創建項目、用戶注冊、登錄、注銷功能創建Django項目,創建df_user的App創建靜態文件夾static(跟manage.py保持在同一級別下)復制靜態文件(css images js)到static路徑下修改settings.py文件修改templates路徑修改數據庫新添加靜態文件加載路徑Pycharm連接mysql數據庫…

命令行進入指定目錄_VIM學習筆記 操作目錄(Manipulate Directory)

在目錄間移動使用以下命令&#xff0c;可以顯示當前所在的目錄&#xff1a;:pwd使用以下命令&#xff0c;在Linux下可以進入HOME目錄&#xff0c;而在Windows下則顯示當前所在目錄&#xff1a;:cd使用以下命令&#xff0c;可以進入指定的目錄&#xff1a;:cd D:tepm使用以下命令…

mysql cluster雙機_GitHub - sophys/mysqlha: 博客“Mysql-cluster數據庫集群雙機HA研究”測試代碼...

mysqlha本代碼是基于博客Mysql-cluster數據庫集群雙機HA研究所寫的。測試采用的是32位環境&#xff0c;linux環境為debian&#xff0c;如果是其他系列只需修改部分指令即可。mysql-cluster版本位&#xff1a;mysql-cluster-gpl-7.2.7-linux2.6-i686.tar.gz&#xff0c;可自行去…

mysql gtid基礎_MySQL 基礎知識梳理學習(四)----GTID

在日常運維中&#xff0c;GTID帶來的最方便的作用就是搭建和維護主從復制。GTID的主從模式代替了MySQL早期版本中利用二進制日志文件的名稱和日志位置的做法&#xff0c;使用GTID使操作和維護都變得更加簡潔和可高。1.GTID的優點(1)基于GTID搭建主從復制根據簡單。(2)可以確保每…

k8s pod MySQL環境變量_Kubernetes 配置Pod和容器(一)定義容器環境變量

此頁展示了如何給運行在Kubernetes Pod中的容器定義環境變量。開始之前必須有一個Kubernets集群&#xff0c;和一個能和集群溝通的kubectl命令行工具。如果你還沒有集群&#xff0c;你可以用Minikube建立一個集群。給容器定義環境變量當你建立了一個Pod,你可以給你運行在Pod中的…

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

第一篇介紹了生成器目錄設計。xyzcoding&#xff1a;Koa2第一篇&#xff1a;詳解生成器?zhuanlan.zhihu.com接下來學習Koa2的中間件。Koa2本身只能算一個極簡的HTTP服務器&#xff0c;自身不內置中間件&#xff0c;但是提供中間件內核。中間件是Koa2的核心&#xff0c;因此需要…

mysql命令行如何建庫_MySQL心得2--命令行方式建庫和表

1.創建使用create database或create schema命令可以創建數據庫。create database 庫名create database if not exists 庫名(創建庫并檢驗創建的庫是否存在&#xff0c;不存在則建&#xff0c;存在就不建了)MySQL不允許兩個數據庫使用相同的名字&#xff0c;使用ifnot exists從句…