自發(fā)布基于 Julia 的科學計算環(huán)境 MWORKS.Syslab 以來,同元軟控在科學計算語言、多語言統(tǒng)一編譯和融合、AI 和機器學習等技術(shù)方向上開展了深入研究。任何技術(shù)的發(fā)展都離不開良好的生態(tài),依賴生態(tài)并建設(shè)生態(tài),是同元軟控所堅持的發(fā)展理念。2022 年,同元軟控跟 Julia 開源社區(qū)開展了多層次的合作,包括發(fā)起開源項目和開源贊助等。
本期,我們來盤點一下同元軟控在 Julia 編程語言方面的一些社區(qū)工作。
一、JuliaCN 2022 報告盤點
Julia 中文社區(qū)組織的冬季會議于2022年12月3日至12月9日舉行,國內(nèi)使用 Julia 的開發(fā)者聚集在一起分享與 Julia 有關(guān)的技術(shù)報告。作為 JuliaCN 的黃金贊助商,同元軟控在這次會議中給予了大力支持,并在這次會議貢獻了 6 場精彩的報告。
下面對每場報告的內(nèi)容進行概述,對相關(guān)內(nèi)容感興趣的朋友可以直接觀看 B 站視頻了解更多內(nèi)容。
1、同元軟控與 Julia
我們(同元軟控)非常看好 Julia 的發(fā)展,也會持續(xù)不斷地與 Julia 社區(qū)一起勇攀未來的高峰。
報告人:郭俊峰 (產(chǎn)品總監(jiān))
這個報告向社區(qū)介紹了同元軟控發(fā)展歷程,以及同元軟控為什么選擇 Julia 作為科學計算基礎(chǔ)語言,報告就 CPS(信息物理融合系統(tǒng))的發(fā)展做了簡要探討,縱觀國際科學計算軟件的發(fā)展,都發(fā)端于數(shù)學計算,然后走向廣泛的科學計算并最終走向系統(tǒng)仿真,三大數(shù)學軟件:MathWorks、 WOLFRAM 和 Maple 無不如此。同元深耕系統(tǒng)建模 20 年,在系統(tǒng)建模技術(shù)上積累深厚,需要尋找跟系統(tǒng)建模相匹配的下一代科學計算語言。Julia語言恰好在各方面都符合 CPS 對科學計算的訴求:動態(tài)、高性能、開源而且面向未來。
報告分享了 Modelica 和 Julia 現(xiàn)階段的融合進展,更對未來做了展望。同元軟控堅定的看好 Julia 的發(fā)展,也希望跟 Julia 社區(qū)一起推動科學計算工具和生態(tài)的發(fā)展。
2、新手教程:寫出糟糕好的 Julia 代碼的N種思路
Julia 可以寫出極其高效的代碼,但這需要經(jīng)過一定的觀念轉(zhuǎn)變與編程訓練。
報告人:陳久寧
Julia 初學者關(guān)于 Julia 最大的困惑可能在于 “為什么 Julia 聲稱很快,但是我隨便試著把我舊的 Python/MATLAB 代碼翻譯過來之后發(fā)現(xiàn)并不快,甚至比 Python/MATLAB 還慢”。這個教程的目的是為了介紹那些 Julia 與其他語言在使用上最核心的差異。這個教程的內(nèi)容取材于陳久寧在同元軟控日常代碼評審中的頻繁發(fā)現(xiàn)的問題,這些問題背后實際上是那些高級 Julia 開發(fā)者必知必會的一些內(nèi)容。
這個教程當天收到了一位社區(qū)中 Julia 初學者的高度評價:“一個 Julia 基礎(chǔ)語法不全會的人,這場報告竟然聽懂了。Julia 性能很大程度上需要人來操作:固定類型、不可變結(jié)構(gòu)體等等... 說實話不聽這一場,我可能就會按照其他語言那樣去學習,不去提升 Julia 性能了。”
3、TyMLang.jl:將 MATLAB 代碼導入 Julia 生態(tài)
你可以在 Julia 下執(zhí)行 .m 文件,而這完全不需要 MathWorks。
報告人:趙王宏楦
MATLAB 是迄今為止最具影響力的數(shù)值計算集成開發(fā)環(huán)境,它在工程領(lǐng)域遺留了大量代碼資產(chǎn),在各行各業(yè)的老一代專業(yè)人員中有相當高的普及度。隨著時代發(fā)展,MATLAB 在以深度學習為代表的新興科學計算分支中呈現(xiàn)明顯的頹勢;而 Julia 語言作為一個面向未來的科學計算語言,同時很好地繼承 Python 等語言的歷史遺產(chǎn),具有非常廣闊的發(fā)展空間。
我們希望 MATLAB 的老用戶,和他們的部分代碼資產(chǎn)能參與到新一代生態(tài)的發(fā)展中來。正因如此,我們破除萬難,在 Julia 中實現(xiàn)了一個高度兼容 MATLAB 的編程語言——同元軟控 M 語言。使用同元軟控 M 語言,可以讓那些掌握 MATLAB 技巧的工程師和科學家快速投入到最新的科學計算生態(tài)中工作,讓他們訪問并應用 Julia 生態(tài)中那些新穎的技術(shù)和工具。
4、JNumPy:使用 Julia為 Python/Numpy 編寫擴展模塊
對于 Python 社區(qū)來說,JNumpy 是一個更好的 C/Numba 方案——更少的代碼封裝和更高的性能。
報告人:宋家豪
本次報告向社區(qū)介紹了由同元軟控開發(fā)的 JNumPy 工具庫,首先介紹了 JNumPy 的使用場景,即提供高效且易用的封裝工具,將 Julia 代碼以封裝成 Python 庫,使得 Python 用戶能夠調(diào)用 Julia 得到更好的計算性能。報告演示了使用 JNumPy 封裝 Julia 代碼的示例,JNumPy 的使用方法,Julia 和 Python 之間的數(shù)據(jù)轉(zhuǎn)換規(guī)則,性能對比,以及未來優(yōu)化的工作方向等。
由于 JNumPy 在啟動速度,運行速度,跨平臺支持等特性上相比其他 Python 調(diào)用 Julia 的方案 (PyCall, PythonCall) 具有明顯的優(yōu)勢,在追求性能以及工程化的應用場景下,JNumPy 提供了目前最強大的解決方案。
5、TyPlot: 使用 Julia 實現(xiàn)自定義繪圖模塊
同元基于自身需求開發(fā)的一個繪圖框架。
報告人:陳志強
向社區(qū)介紹了同元軟控在數(shù)據(jù)可視化方面的迫切需求,引出了圖形庫開發(fā)的必要性。從如何開發(fā)圖形庫、現(xiàn)有的技術(shù)調(diào)研、圖形庫最終的開發(fā)目標介紹了圖形庫的背景。
這個報告主要介紹了同元軟控圖形庫已具備的能力,包括豐富的圖形種類,友好的交互界面以及一體化的用戶體驗。選取了專業(yè)庫的幾個典型應用,直觀的展示了圖形庫對復雜圖形的支持能力。報告最后提出了圖形庫進一步發(fā)展方向,從能用變成好用、二維輻射三維、常用繪圖擴展到專業(yè)圖形繪圖、離線繪圖到實時繪圖、桌面繪圖到網(wǎng)頁繪圖。
6、為什么我推薦使用 Julia ?—— 可組合性與生成函數(shù)
在 Julia 中 1 + 1 > 2 的場景隨處可見 —— 更少的代碼、更好的可讀性、更高的效率。
報告人:陳久寧
今年在 Julia 社區(qū)最出圈的一篇博客大概是 Yuri 的“為什么我不再推薦使用 Julia”,一針見血地指出了 Julia 的可組合性在正確性方面的風險。在這個報告中,我們介紹了一個同元內(nèi)部通信工具箱的一個核心組件及其設(shè)計思路——用不到 300 行代碼實現(xiàn)在 Galois 域上的數(shù)值計算中得到超越 MATLAB 的 C 代碼 1000 倍的性能優(yōu)勢。
這一組件背后的核心思路在于:1) 利用 Julia 生成函數(shù)帶來的無運行時開銷的泛型支持,以及更重要的 2) Julia 的可組合性。圍繞性能和可組合性這兩個核心特征設(shè)計的 Julia 允許我們用更少的代碼、更清晰的編程實現(xiàn)和更少的硬編碼假設(shè)來完成日常編碼工作的需求,而這是我們始終推薦 Julia 的原因。相比而言,Yuri 文章指出的是一個普遍但并不關(guān)鍵的場景——它只會出現(xiàn)在實驗性代碼階段。
二、Julia 社區(qū)貢獻
2022年,同元軟控開源的 Julia 相關(guān)工具箱或組件一共有三個,均存放在GitHub: Suzhou-TongYuan項目下。
1、JNumpy: julia-numpy
作者:趙王宏楦、宋家豪
JNumPy 是同元軟控針對 Python 調(diào)用Julia語言問題給出的一個工程化的解決方案。在所有 Python 調(diào)用 Julia 的方案中,JNumPy 以啟動速度最快、運行速度遙遙領(lǐng)先、支持跨平臺及特殊的 Python 發(fā)行版、具有編譯可移植性、對 NumPy 類型兼容性最佳、嚴格可控的類型轉(zhuǎn)換關(guān)系等特點脫穎而出。在較為“嚴肅”的 Python 調(diào)用 Julia 工程中,JNumPy 是將 Julia 數(shù)據(jù)及函數(shù)暴露給 Python 的最佳選擇。
2、ObjectOriented.jl
作者:趙王宏楦
ObjectOriented.jl 是同元軟控為 Julia 語言實現(xiàn)的一套完整的、機制性 (mechanical) 的面向?qū)ο蠛陰欤軌蜃層脩粢再N近 Python 的語法進行面向?qū)ο缶幊蹋栽L問諸如繼承/多繼承、getter/setter,接口編程等功能。
由于該庫是 Julia 中第一個完整實現(xiàn)常見面向?qū)ο筇匦缘膸欤谙蛏鐓^(qū)征求命名意見時,被一致認同冠以 ObjectOriented.jl 這個明顯具有生態(tài)主導地位的名字。
3、UnzipLoops.jl
作者:陳久寧、趙王宏楦
針對以下這類將廣播結(jié)果拆分到不同矩陣的典型需求,UnzipLoops.jl 給出了社區(qū)中最高效的解決方案:
在給出高效方案的同時,UnzipLoops 是一個零依賴的輕量包——源代碼僅僅不到100行。
三、寄語
2022年是同元軟控跟 Julia 開源社區(qū)合作的元年。同元軟控堅定看好 Julia 的發(fā)展,也堅定地將Julia作為下一代科學計算環(huán)境的支撐語言。同元軟控會持續(xù)跟 Julia 社區(qū)開展多層次合作,也歡迎 Julia 社區(qū)以及有志于建設(shè)開源科學計算生態(tài)的同道中人,一起推進 Julia社區(qū)和科學計算環(huán)境Syslab的發(fā)展,讓中國在新一代科學計算中做出更大的貢獻與成就。
審核編輯黃昊宇
-
電子
+關(guān)注
關(guān)注
32文章
1901瀏覽量
89725 -
代碼
+關(guān)注
關(guān)注
30文章
4844瀏覽量
69238
發(fā)布評論請先 登錄
相關(guān)推薦
如意玲瓏社區(qū)2024年度工作總結(jié)

共榮開源生態(tài)!軟通動力子公司鴻湖萬聯(lián)榮獲“2024年度開源鴻蒙社區(qū)卓越單位”

軟通動力榮獲“2024年度開源鴻蒙社區(qū)卓越單位”
RT-Thread榮登2024開源創(chuàng)新榜單,躋身中國十大開源社區(qū)

軟通動力榮膺“openGauss社區(qū)突出貢獻單位”
黃鶴開源社區(qū)正式發(fā)布
deepin榮獲2024年度開源社區(qū)獎
deepin社區(qū)落地開源生態(tài)發(fā)展合作倡議
OpenHarmony人才生態(tài)大會南向生態(tài)社區(qū)發(fā)展論壇在武漢圓滿舉辦

評論