在單機上執行julia並行加速的例子
用sharedarray + @parallel for 與 array + for對比
cnt = SharedArray(Int,1) cnt[1]=0; st=time(); for i in 1:10^7 cnt[1]=cnt[1]+1; end; ed=time(); println(cnt[1]) println(ed-st); cnt = Array(Int,1) cnt[1]=0; st=time(); for i in 1:10^7 cnt[1]=cnt[1]+1; end; ed=time(); println(cnt[1]) println(ed-st); cnt = SharedArray(Int,1) cnt[1]=0; st=time(); @parallel for i in 1:10^7 cnt[1]=cnt[1]+1; end; ed=time(); println(cnt[1]) println(ed-st); println(cnt) ---輸出 julia> include("d:\\testp.txt") 10000000 2.1689999103546143 10000000 1.6689999103546143 0 0.42100000381469727 [10000000]
序列的程式碼,cnt[1]的輸出是好的,不知道並行程式碼cnt[1]為什麼輸出0,如果把cnt的輸出移到後面,就可以輸出了。
把sharedarray改為array也能算對,也是一樣的速度
cnt = Array(Int,1) cnt[1]=0; st=time(); @parallel for i in 1:10^7+100 cnt[1]=cnt[1]+1; end; ed=time(); println(ed-st); println(cnt[1]) println(cnt) ---輸出 julia> include("d:\\testp.txt") 0.437000036239624 10000100 [10000100]
訪問陣列也是並行快
a=trues(10^7); for i in 1:10^6 a[i*10]=0; end cnt = Array(Int,1); cnt[1]=0; st=time(); @parallel for i in 1:10^7 cnt[1]=cnt[1]+a[i]; end; ed=time(); println(ed-st); println(cnt[1]) println(cnt) ---輸出 julia> include("d:\\testp.txt") 0.42100000381469727 9000000 [9000000]
但是訪問遞迴函式就是並行慢
function re(n::Int32) if n>10 return 1; else return re(n+1)+n; end end cnt = Array(Int,1); cnt[1]=0; st=time(); @parallel for i in 1:10^6 cnt[1]=cnt[1]+re(1); end; ed=time(); println(ed-st); println(cnt[1]) println(cnt) cnt = Array(Int,1); cnt[1]=0; st=time(); for i in 1:10^6 cnt[1]=cnt[1]+re(1); end; ed=time(); println(ed-st); println(cnt[1]) println(cnt) ---輸出 0.437000036239624 56000000 [56000000] 0.28099989891052246 56000000 [56000000]
相關文章
- ClusterShell:一個在叢集節點上並行執行命令的好工具並行
- 一個基於配置檔案構建有向無環圖,並多執行緒執行圖上節點的例子執行緒
- Python簡單實現多執行緒例子Python執行緒
- 6個在本地機器上執行 Kubernetes 的工具
- 多執行緒賣火車票簡單例子執行緒單例
- 在NuoDB上執行AsteriskAST
- wine-在mac上執行exe執行檔案Mac
- Anbox:在 Linux 上執行 Android 應用程式的簡單方式LinuxAndroid
- parallel: 一個簡單的並行執行Go迴圈的庫Parallel並行Go
- 通過一個簡單的例子,瞭解 Cypress 的執行原理
- 轉:在Linux上執行WinFormLinuxORM
- 一個SystemC執行緒與SystemVerilog執行緒通訊的例子執行緒
- systemverilog中for/foreach並行執行並行
- WRF WPS多核並行執行並行
- 如何在LInux上安裝並執行JenkinsLinuxJenkins
- QPython在手機上執行Python的神器Python
- Hazelcast JET在Spring Boot上執行ASTSpring Boot
- 怎樣在 Kubernetes 上執行 PostgreSQLSQL
- 在VSCode上執行Python程式(Mac)VSCodePythonMac
- 在kubernetes上執行WASM負載ASM負載
- 執行緒的【生命週期】和【執行緒的同步】(多視窗售票例子)執行緒
- [Java併發]執行緒的並行等待Java執行緒並行
- 26、多執行緒與並行執行緒並行
- 使用Github Copilot生成單元測試並執行Github
- 在PyCharm中打包Python專案並將其執行到伺服器上的方法PyCharmPython伺服器
- SingleThreadExecutor(單執行緒執行器)thread執行緒
- 保證執行緒在主執行緒執行執行緒
- 在手機上如何執行Python程式Python
- Hummingbird: 在Web上執行Flutter應用WebFlutter
- 有關程式碼執行效率提升的小例子
- 如何使用 appium+pytest 進行多機並行執行不同 case 檔案APP並行
- 執行緒 並行 與 併發 的區別執行緒並行
- 多執行緒並行執行,然後彙總結果執行緒並行
- Pytorch使用資料並行,單機多卡PyTorch並行
- Nginx 高階篇(十)並行 併發 單執行緒(廢話篇 )Nginx並行執行緒
- Oracle“並行執行”——監控檢視Oracle並行
- 在樹莓派上安裝c++版本的opencv並執行樹莓派C++OpenCV
- laravel建立定時任務並在windows下執行LaravelWindows
- 在Kubernetes上執行SAP UI5應用(上)UI