[問題] 矩陣相乘與平行運算的問題

看板R_Language作者 (principal component QQ)時間8年前 (2017/04/22 13:47), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
[問題類型]: 效能諮詢(我想讓R 跑更快) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 兩個矩陣相乘如果 使用apply 或 將一個矩陣拆成許多的list使用lapply 會不會比較快? 如果有一群大矩陣以及一群向量需要進行矩陣相乘, 想辦法建立成矩陣相乘是否是最快的? [程式範例]: http://ideone.com/OVgQOx 我試的結果好像是矩陣相乘是最快的 但是我的記憶體不夠大,不能嘗試更大的矩陣 > a <- matrix(rnorm(10000000),ncol = 1000); > dim(a) [1] 10000 1000 > b <- matrix(rnorm(200000), nrow = 1000); > dim(b) [1] 1000 200 > > start <- proc.time(); > d1 <- a%*%b; > end <- proc.time(); > end - start; user system elapsed 1.85 0.00 1.84 > > start <- proc.time(); > d2 <- apply(a,1,function(x) x%*%b) > end <- proc.time(); > end - start; user system elapsed 10.73 0.07 10.83 > > start <- proc.time(); > a1 <- apply(a,1,function(x) list((x))); > d3 <- lapply(a1, function(x) x[[1]]%*%b) > end <- proc.time(); > end - start; user system elapsed 9.49 0.06 9.58 [環境敘述]: R version 3.3.2 (2016-10-31) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows >= 8 x64 (build 9200) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.166.11 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1492840049.A.A97.html

04/22 15:43, , 1F
直接乘用BLAS最快,BLAS的計算複雜度最低
04/22 15:43, 1F

04/22 15:44, , 2F
改用MRO可以有比較快的BLAS庫
04/22 15:44, 2F

04/22 16:26, , 3F
BLAS是什麼意思?MRO指的是Microsoft R Open嗎?
04/22 16:26, 3F

04/22 16:36, , 4F
BLAS GOOGLE WIKI有寫
04/22 16:36, 4F

04/22 16:36, , 5F
MRO是Microsoft R Open沒錯
04/22 16:36, 5F
文章代碼(AID): #1O-kvngN (R_Language)
文章代碼(AID): #1O-kvngN (R_Language)