在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Julia可用于分析和解決計算科學問題的高性能工具

電子工程師 ? 來源:lq ? 2019-01-18 16:01 ? 次閱讀

Julia 編程語言創建者之一 Viral Shah 博士,確認參加 EmTech China 2019 全球新興科技峰會。

科技不僅僅是一個時代的標簽,它所引導的產業變革更是在雕刻這個時代。從實驗室到產業,從生產線到每個用戶,越來越短的產業化路徑和越來越快的迭代速度,將我們與新興科技緊密相連。無論是市場寒冬或是創業燃點,我們現在都需要撥開迷霧厘清真相,需要對科技未來發展趨勢有一個精準的判斷。所以,我們在 2019 年開年為您準備了 EmTech China 這份名單,而您,只需要坐下來,聽這些全球最權威的人講最重要的事。

2018 年 8 月初,隨著的 1.0 版本發布的消息確認,一門名為“Julia”的高性能動態編程語言一夜之間刷爆了朋友圈和 GitHub。2018 年 12 月,Julia 的創始團隊被授予 James H. Wilkinson Prize,對他們創建 Julia這一可用于分析和解決計算科學問題的高性能工具,加以表彰。

圖 | Julia 語言的團隊部分成員即獲獎人(來源:MIT News)

這個編程語言的新版本之所以受到整個人工智能界的關注,最主要的原因正是其將 C 語言的速度、Ruby 的靈活、Python 的通用性前所未有地結合在一起,支持并行處理,易于學習和使用,尤其適合科學和工程計算。

更早之前,在今年 TOIBE 8 月份編程語言排行榜上,Julia 已迅速攀升至第 50 名。根據 Julia 開發團隊的說法,在七項基礎算法的測試中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。也有越來越多的人相信,Julia 會成為未來的主流編程語言。

圖丨在過去的三個月中,Julia 在 RedMonk 的排名中上升了三位,排名第 36 位(來源:RedMonk)

Julia 的崛起,與目前編程語言發展遭遇的瓶頸息息相關:隨著人工智能尤其是機器學習的興起,現實世界對計算的速度及性能要求也越來越高,不同的編程語言由于自身的局限性難以兼顧,例如說,在 Julia 誕生之前,很多人不得不把同樣的程序進行多次處理:首先使用 Python 或 R 這樣的語言來開發一種算法,并通過這些語言制作圖表,然后再用 C++Java 改寫程序,以獲得更好的計算機處理性能。

突破這種瓶頸無疑有兩個方向,一是基于現有編程語言進行優化,二是“將革命進行到底”——專門開發一門新語言。后者自然成本更高。

Julia 的開發人員顯然選擇了后者,而且他們的野心不小:Julia 被專門設計為用于快速運行基礎數學,這正是大多數數據科學的基礎,如矩陣表達式和線性代數。

它的誕生可追溯到 2009 年。當時,正是基于對現有編程語言的“不滿”,麻省理工學院啟動了一個新型編程語言開發計劃,到了 2012 年的時候,這個計劃有了初步的成果,也就是如今的 Julia。

圖 | 麻省理工學院 Julia 實驗室(來源:Julia 實驗室官網)

具體而言,Julia 項目由麻省理工學院教授Alan Edelman領導,另外幾位關鍵創造者則包括Jeff Bezanson(“Julia”名字來自于 Bezanson 的一個舊項目)、Stefan Karpinski 和 Viral Shah。其大部分關鍵發展成果都來自麻省理工學院的 Julia 實驗室,也有超過 700 名志愿者參與了 1.0 版本的制作。

“我們想開發一種開源的編程語言,我們希望這門語言有 C 語言一樣的速度、R 語言一樣的靈活性,有同像性(homoiconicity), 有像 Lisp 語言那樣擁有真正的宏特性,但是也像 Matlab 一樣有易于理解、被人所熟悉的數學標記。我們希望它像 Python 一樣易用,像 R 語言一樣適用于統計,像 Perl 一樣適用于字符串處理,處理線性代數像 Matlab 一樣強大,像 DOS 命令一樣擅長粘合程序。這似乎看起來簡單易學,但是想要讓黑客樂意去迎合它卻不是簡單之事。我們希望它具有互動性且能夠被編譯”,在《Why we created Julia》這篇文章中,Julia 團隊如此解釋他們開發這個語言的初衷。

圖丨Viral Shah(來源:DT 君)

Viral Shah 也曾經表示:“如果你是一名數學家、科學家或者工程師,你可以選擇一種速度快的語言,比如 C++或 Java,又或是任意一種容易學習的語言,比如 Matlab,R,或 Python,所以我們創造了 Julia 這種又快又便捷的語言。”如今,他已經成為 Julia Computing 公司的 CEO,該公司致力于幫助其他公司使用 Julia 語言。

當然,Julia 的問世,除了讓人感慨 IT 行業發展之快、推陳出新之迅猛,另一方面也向所有人提出了一個新的問題:我究竟要不要學習這門新語言。這個問題將非常重要,就像 Y-Combinator 的聯合創始人 Paul Graham 所說的,“當你可以選擇你要用的編程語言時,不使用最強的那一種將是一個錯誤”。

近日,DT 君獨家采訪了上文提到的 Julia 開發團隊的四位創始人員。Julia 能否成為主流編程語言,以及它是否值得學習,許多關于 Julia 的疑問,或許你能從創始團隊的回答中找到答案。

圖丨Alan Edelman(來源:麻省理工學院官網)

一、在團隊看來,Julia 語言的核心創新點是什么?

開發一種基于多分派(Multiple dispatch)的語言。在最初的一段時間里,我們并不 100% 清楚怎么做。多方法和外部調度看起來很酷,但我們不清楚它們有多么有用和強大。

重視多分派特性改變了我們編程語言的編程方式。這是一件很奇怪的事情,因為當人們問“多重調度有什么了不起?”時,很難具體回答有什么特別的地方,但是一旦你習慣了這種特性,就很難回頭了。

除了高性能,Julia 還有一些與眾不同的特性。例如,Julia 能夠訪問異常廣泛的編程堆棧。你可以以良好的性能操作比特和字節(并查看匯編代碼),同時也可以處理高階函數、設計宏定義、進行面向對象編程,所有這一切都可以很好地融合在一起。剝離這些層也很容易。為完成不同任務,人們經常需要轉換語言。Julia 程序員對不同的任務或許使用的技術和樣式不同,但完全可以使用相同的語言(即 Julia)。

二、在 Julia 的開發過程中,哪一部分投入的精力最多?有什么遵循的標準嗎?

設計并搞清楚內部的工作原理總是最花時間的。

開發好的編程語言的關鍵是設計一組簡單、強大的原語,能夠很好地執行,然后根據這些原語定義所需的大部分功能。在語言開發的早期,添加許多“內置”結構似乎是個好主意,但在編寫優化編譯器時,這些結構可能會帶來很多麻煩。用一種語言本身編寫該語言的標準庫既有利于性能(從長遠來看),也可以提供寶貴的使用語言的經驗,這些經驗又可以反饋到語言的設計中。當一個函數運行得太慢時,我們會去看檢查一下是否可以改進編譯器讓函數運行得更快。反復如此,我們不僅可以改善這個函數,還可以解決一系列類似的問題。

三、Julia 具體是如何實現同時具備 Python 的簡單、C 語言的執行速度、R 語言一樣的數據分析庫支持?

正如上一個問題,簡單性來自于有少量精心選擇的原語。自動垃圾收集(一種計算機內存管理手段)對語言的可用性也有很大的貢獻,這一點在編程語言領域已經是很久以來的共識了。

為提高速度,我們研究了所有使大多數動態語言變慢的因素,并仔細考慮了哪些因素可以消除。例如,動態語言通常允許數組元素和對象字段保存任何類型的值。然而,研究表明,即使在這些語言中,具有常量類型的同構數組和字段也非常普遍。因此,設計 Julia 利用了這一點,更容易添加類型限制,并在任何可能的情況下默認使用類型統一的集合。

四、Julia 目前宣稱和 C 語言一樣快。但是否在所有情況下都是這么快?還是只在數據處理的時候和 C 一樣快?和目前主流語言如 Python、C 等的兼容性如何?

是的,對于大多數用例,Julia 可以和 C 一樣快。不過必須注意避免過度的內存分配,并確保代碼是類型穩定的。Julia 提供了各種各樣的工具,編程者無需花費太多精力就可以編寫高性能的像 C 一樣快的代碼。

調用 C 和 Fortran 在 Julia 中是本地的——甚至不需要提供編譯器??梢赃\行下面的代碼完成調用:

julia> ccall(:clock, Int32, ())

2539697

同樣,Cxx.jl 使得調用 C++庫、模板等變得非常容易。我們可以通過 PyCall.jl 和 RCall.jl 這樣的集成接口調用 Python 和 R。反過來,Python 和 R 通過調用 PyJulia 和 RJulia 包來調用 Julia 語言。JavaCall.jl 可以讓 Julia 調用 Java。我們也有一個干凈清晰的嵌入編程接口,讓任何其他語言都很容易地調用 Julia。

五、從實際應用來說,Julia 已經用于自動駕駛汽車、機器人和 3D 打印機,此外還廣泛應用于精準醫療、增強現實、基因組學及風險管理。那么 Julia 語言本身適合什么應用? 團隊有沒有自己特別看好的一個實際應用方向?為什么?

我們一直致力于構建一種通用語言,這種語言對于所有形式的數學計算都有很好的抽象。因此,看到各種各樣領域應用的蓬勃發展比看到任何一個特定應用的蓬勃發展更讓我們興奮。

(來源:Julia 官網)

六、目前 Julia 語言主打科學計算,下載者包括谷歌、Facebook 和美國能源部等各個部門的開發者。未來,Julia 是否會擴展其目標人群,用于更多面向對象程序設計?公布了 1.0 以后,有沒有來自一些用戶的收獲或反饋?

Julia 的目標受眾在過去幾年里每 9 個月就會翻一番。我們認為,多分派、通用函數和專門化的語言特性是為該語言的用戶精心設計的。

Julia 在 GitHub 上已經收到了超過 700 名開發者的貢獻。許多人貢獻超過 2000 個包。我們估計大約有 30 名核心開發人員對 Julia 語言本身貢獻了大量工作。

在用戶方面,Julia 的下載量超過 200 萬次。作為一種開放源碼語言,很難將這個數字轉換為真實用戶數量。此外,在 Julia Computing 方面,我們看到來自 700 所大學和 1000 多家公司的用戶下載或使用了 Julia。Julia1.0 非常受歡迎,語言社區會追求長期穩定,每個人都為此感到興奮。我們也受到非常多的反饋,有中文的也有英文的。對于 1.0,在考慮添加新特性之前,我們將關注長期穩定性。

七、團隊目前對 Julia 在商業項目應用上有何計劃?

所有 Julia 的創建者都聚集在一起,形成了遵循開源商業模式的 Julia Computing 公司。Julia Computing 公司的產品已經被成千上萬的用戶下載,JuliaBox 被廣泛用于 Julia 的教學。

此外,Julia Computing 為許多企業提供開發人員和生產支持,并為全球用戶提供培訓和咨詢。

八、用 Julia 寫的項目中,哪一個讓你們覺得印象最深刻?

最印象深刻的包是以下幾個:

用于數學優化研究的 JuMP:

https://github.com/JuliaOpt/JuMP.jl

用于微分方程相關的 DiffEq:

http://juliadiffeq.org/

用于機器學習的 Flux:

http://fluxml.ai/

另一個用于機器學習(深度學習)的 Knet:

https://github.com/denizyuret/Knet.jl

除此之外,這些包也都非常有用:

Revise 包,真的太棒了,Tim Holy 是個天才!:

https://github.com/timholy/Revise.jl

BenchmarkTools,一個測試性能相關的包:https://github.com/JuliaCI/BenchmarkTools.jl

StaticArrays 包,這個包很可能作為標準庫:https://github.com/JuliaArrays/StaticArrays.jl

UnicodePlots 包,唯一一個到處都能可靠安裝使用的畫圖的包:https://github.com/Evizero/UnicodePlots.jl

圖丨Julia 團隊(來源:vccircle)

九、Julia 在中國的開發者中引起了很大的討論,但有人認為 Julia 本身又沒有很強的推廣力度,可能很難有公司會將 Julia 使用在商業項目上,對于這種說法團隊怎么看?

Julia 是一種“草根”語言,是由真正喜歡開發和使用它的人開發出來的。也許將來一些更大的公司會采用它——但我們認為這不是成功的必要條件。Python、PHP、Perl、Ruby、Lua 等語言都不是由任何組織推動的。至少從目前來說,它是由社區開發的,這也是它能吸引用戶的原因。

十、Julia 的野心很大,想要集成多種語言的優點,規避掉這些語言不足的地方。不過一個語言是否值得我們學習,還要看它的學習氛圍、市場環境以及具體適用的場景,目前團隊認為 Julia 在這些方面還存在哪些不足?現階段最大的挑戰是什么?下一個版本計劃將優先解決哪些問題?

近期我們一直在努力的方向是提升編譯器的效率。

開發一種具有高度抽象并且能夠在各種硬件上工作的快速語言的時機已經成熟。我們將關注當前特性的穩定性,但也會添加新特性。

一個主要考慮的特性是多線程。雖然我們今天已經有了多線程功能,但它還不能以一種每一個庫和用戶代碼都可以并行的方式進行組合(很少有語言有這種情況)。英特爾的 Kiran Pamnany 已經發出了拉取請求(pull request),要求實現這一目標。我們還將關注我們的 GPU 支持、谷歌的 TPU 和各種新硬件。此外,將來還會有相當多的人關注開發工具。

十一、團隊心目中最理想的科學計算語言是什么樣的?

我們還有很多事情還需要去做。在硬件方面,在最大的超級計算機上工作、在 GPU 上工作對于大型科學應用是必不可少的。機器學習應用程序正在驅動硬件的發展,這將給軟件開發人員帶來許多挑戰。在 ARM 處理器嵌入式硬件上運行 Julia 對于設備部署也是至關重要的,因為機器學習算法在物聯網應用程序上也越來越常見了。

多線程目前也是一個尚未解決的問題,對科學用例的可組合性還未能讓人滿意。這是我們希望在不久的將來解決的問題,設計基于 Cilk 編譯器。

Julia 創建者將來華,出席 EmTech China

人們總是希望使用更簡單的工具實現越來越復雜的任務,而現在,我們在編程語言方面有了更多的選擇,那么要使用哪一種語言處理任務,就交給了各位使用者。但是在此之前,你或許有興趣親身聆聽 Julia 創建者之一兼 Julia Computing 的 CEO Viral Shah 博士更多的分享。

Viral Shah 博士畢業于加州大學圣塔芭芭拉分校的計算機科學專業,是 Julia 項目的共同創建者之一,也是 Julia Computing 的聯合創始人兼 CEO。

他在構建開源軟件方面經驗頗豐。除了 Julia,他還是 Circuitscape 的作者之一。Circuitscape 是一個開源程序,借用了電子電路理論中的一些算法。

他也曾是印度國家身份證項目 Aadhaar 的早期成員之一,他重新架構了印度的國家社保系統,其所覆蓋的社會群體,及其相應的待遇得到明顯提高,同時避免了大量的財政流失。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程語言
    +關注

    關注

    10

    文章

    1955

    瀏覽量

    35957
  • 人工智能
    +關注

    關注

    1804

    文章

    48589

    瀏覽量

    245864
  • python
    +關注

    關注

    56

    文章

    4823

    瀏覽量

    86050

原文標題:EmTech China | 史上最強科學計算編程語言?

文章出處:【微信號:deeptechchina,微信公眾號:deeptechchina】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    一文搞懂先進存儲技術

    高性能計算(High Performance Computing, HPC)以超高的計算性能廣泛應用于國民經濟的各個領域,不僅
    的頭像 發表于 02-26 17:42 ?788次閱讀
    一文搞懂先進存儲技術

    高性能計算,名副其實的“算力皇冠”

    和推理的高性能計算技術。今天,我們就來聊一聊高性能計算。計算科學的“皇冠”初次涉及
    的頭像 發表于 02-08 14:27 ?602次閱讀
    <b class='flag-5'>高性能</b><b class='flag-5'>計算</b>,名副其實的“算力皇冠”

    國產高性能物理層以太網PHY收發器適用于數據中心、智能計算等應用市場

    國產高性能物理層以太網PHY收發器適用于數據中心、智能計算等應用市場
    的頭像 發表于 12-26 09:58 ?604次閱讀
    國產<b class='flag-5'>高性能</b>物理層以太網PHY收發器適<b class='flag-5'>用于</b>數據中心、智能<b class='flag-5'>計算</b>等應用市場

    Triton編譯器在高性能計算中的應用

    高性能計算(High-Performance Computing,HPC)是現代科學研究和工程計算中不可或缺的一部分。隨著計算需求的不斷增長
    的頭像 發表于 12-25 09:11 ?805次閱讀

    相位噪聲分析儀的技術原理和應用

    相位噪聲分析儀是一種用于信息科學與系統科學、電子與通信技術、計算科學技術、航空、航天
    發表于 12-13 14:21

    AI高性能計算平臺是什么

    AI高性能計算平臺不僅是AI技術發展的基石,更是推動AI應用落地、加速產業升級的重要工具。以下,是對AI高性能計算平臺的介紹,由AI部落小編
    的頭像 發表于 11-11 09:56 ?533次閱讀

    高性能云服務器有什么用處?

    高性能云服務器是一種基于云計算技術的虛擬化服務器,具有高性能、靈活性、可靠性和安全性等特點。它廣泛應用于網絡托管服務、數據備份與恢復、大數據分析
    的頭像 發表于 11-04 10:22 ?469次閱讀

    使用Arthas火焰圖工具的Java應用性能分析和優化經驗

    分享作者在使用Arthas火焰圖工具進行Java應用性能分析和優化的經驗。
    的頭像 發表于 10-28 09:27 ?995次閱讀
    使用Arthas火焰圖<b class='flag-5'>工具</b>的Java應用<b class='flag-5'>性能</b><b class='flag-5'>分析</b>和優化經驗

    參數分析儀的技術原理和應用場景

    元素含量、化合物組成等)以及物理性質(如電阻率、導熱系數等)。 這些信息對于理解材料的結構和性能關系、優化材料配方以及開發新材料具有重要意義。 環境監測: 在環境監測中,參數分析可用于測量水質
    發表于 10-17 14:42

    利用NVIDIA RAPIDS加速DolphinDB Shark平臺提升計算性能

    DolphinDB 是一家高性能數據庫研發企業,也是 NVIDIA 初創加速計劃成員,其開發的產品基于高性能分布式時序數據庫,是支持復雜計算和流數據分析的實時
    的頭像 發表于 09-09 09:57 ?733次閱讀
    利用NVIDIA RAPIDS加速DolphinDB Shark平臺提升<b class='flag-5'>計算</b><b class='flag-5'>性能</b>

    如何理解云計算?

    據的安全性。 **高性能計算:**云計算平臺提供高性能計算資源,用于處理復雜的
    發表于 08-16 17:02

    帶你了解什么是高性能計算(HPC)

    受益于HPC更高的速度處理大量數據的能力,全球正在進入HPC大周期,高性能計算的發展水平已經成為衡量一個國家綜合實力和高科技發展水平的重要標志,美國、歐盟、日本、英國都高度重視高性能計算
    的頭像 發表于 07-20 08:28 ?1074次閱讀
    帶你了解什么是<b class='flag-5'>高性能</b><b class='flag-5'>計算</b>(HPC)

    數據分析工具有哪些

    數據分析是一個涉及收集、處理、分析和解釋數據以得出有意義見解的過程。在這個過程中,使用正確的工具至關重要。以下是一些主要的數據分析
    的頭像 發表于 07-05 14:54 ?1704次閱讀

    芯品# 高性能計算芯片

    (LSE:AWE)是全球技術基礎設施高速連接和計算芯片的全球領導者,與Arm合作開發基于Arm ? Neoverse?計算子系統(CSS)的高級計算芯片,用于人工智能/機器學習(AI/
    的頭像 發表于 06-27 10:28 ?7296次閱讀

    高性能計算集群的能耗優化

    高性能計算(HighPerformanceComputing,HPC)是指利用大規模并行計算機集群來解決復雜的科學和工程問題的技術。高性能
    的頭像 發表于 05-25 08:27 ?720次閱讀
    <b class='flag-5'>高性能</b><b class='flag-5'>計算</b>集群的能耗優化
    主站蜘蛛池模板: 天天操天天干天天操 | avtt加勒比手机版天堂网 | 天天添天天干 | 国产超爽人人爽人人做 | 不卡视频一区二区 | 婷婷五月花 | 亚洲一卡二卡在线 | 夜夜骑天天操 | 亚洲精品私拍国产福利在线 | 久久中文字幕一区二区 | 久久亚洲国产成人影院 | 特级毛片免费视频播放 | 天天操夜夜夜 | 久久久久久国产精品免费免 | 国产区亚洲区 | 久久天天躁狠狠躁夜夜爽蜜月 | 91免费网站在线看入口黄 | 午夜久久久久久亚洲国产精品 | 特黄黄三级视频在线观看 | h视频免费看 | 日本香蕉视频 | 天天操天天干天天舔 | 欧美不卡在线视频 | 2017天天天天做夜夜夜做 | 日本网站免费 | 亚洲图片综合区另类图片 | 新版天堂资源在线官网8 | 最近国语剧情视频在线观看 | 激情五月社区 | 日韩三级观看 | 五月综合色婷婷影院在线观看 | 欧美αv日韩αv另类综合 | 亚洲午夜日韩高清一区 | 人人爱爱 | 黄色工厂在线播放 | 亚洲第一黄色网址 | 六月丁香婷婷天天在线 | 免费手机黄色网址 | 超大乳抖乳露双乳视频 | 四虎影院永久在线观看 | 欧美大片国产在线永久播放 |