當前位置:
首頁 > 科技 > 數據科學愛用程序語言Julia將加入多線程平行運算功能

數據科學愛用程序語言Julia將加入多線程平行運算功能

高端通用程序語言Julia官方宣布,在1.3.0 Alpha測試版開始加入多線程任務平行(Task Parallelism)功能,這仍是1.3.0的早期預覽版本,正式版預計將會在數個月後推出。

隨著軟體性能提升,越來越依賴在多個處理器核心同時執行工作,官方過去為Julia添加了多程序、分散式程序開發和GPU運算功能,官方提到,他們受到英特爾TBB(Threading Building Blocks)和Go的啟發,現在再次增加了多線程,為Julia程序加入全新的線程介面。

任務平行化模型可以允許多個程序平行執行,而任務將在可用的線程上同時執行所有的程序代碼,官方提到,這個平行化功能運行的方式,類似垃圾回收模型,開發者可以自由地分配對象,而不需要擔心這些對象在什麼時候應該被釋放,而任務平行化則讓開發者可以自由地發布數百萬個任務,而不需要擔心任務在哪個線程上執行。

Julia採用的這個模型是可移植的,而且沒有低端細節,開發者不需要主動啟動和停止線程,甚至不需要關心系統有多少處理器和線程。除此之外,這個平行模型可支持使用嵌套結構,並且是可組合的,開發者可以調用函數庫的平行任務,而這些任務還可以啟動自己的平行任務。

通過多線程工作平行化功能,Julia程序可以調度許多調用函數庫函數的平行任務,官方提到,這是高端語言很重要的功能,因為在高端語言程序需要經常調用函數,而Julia增加了平行運算的能力,同時也就為整個Julia組件生態系統增加了多核平行運算的能力。

目前這個多線程任務平行化功能仍有許多限制,官方提到,在實例上,每一個任務都需要有自己的執行堆棧,但這與一般Unix操作系統提供的程序與線程堆棧不同,因此Julia自己實例了一個替代切換堆棧,不過,這是需要在任務切換時,以時間來交換內存空間的折衷做法。

另外,任務現在也無法在不同線程中搬遷,官方提到,這在未來的版本會修正。而且為了避免CPU的使用率總是維持100%,因此系統會讓部分任務睡眠,但當一些線程在其他線程繼續睡眠的時候調度新工作,則會產生同步上的問題。

官方提到,多線程任務平行功能的發展,從Julia 0.1就開始,他們提供了對稱式協作程序功能,並將其應用於事件I/O上,因此Julia程序中總會有一個並行單元運行,在2014年,官方明確的認為Julia需要基於線程的平行化功能,在開發垃圾收集器以及線程本地存儲功能時,奠定了一些基礎。

在2016年Julia 0.5版本提供了宏線程(Threads for Macro)功能,可以讓開發者在所有核心中,簡單地處理平行循環,但這個多線程有著巨大的限制,與任務和I/O系統不兼容,開發者無法線上程循環中,進行任何I/O或是在任務間切換。2016年之後官方投入更多的人力,在平行化這項功能的開發,最後花了約兩年的時間,現在得以在Julia中開始真正提供多線程能力。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 十輪網 的精彩文章:

AI機器人害我投資賠錢,我能告他嗎?
Mozilla預覽新版Android瀏覽器

TAG:十輪網 |