一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

這款編譯器能讓Python和C++一樣快!

CVer ? 來(lái)源:機(jī)器之心 ? 2023-04-04 14:21 ? 次閱讀

甚至比 C 的速度還快,現(xiàn)在已在 GitHub 上可用。

深度學(xué)習(xí)興起以來(lái),Python 一直是最熱門的編程語(yǔ)言之一,它在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域占主導(dǎo)地位,甚至是科學(xué)和數(shù)學(xué)計(jì)算領(lǐng)域的主角。如今你能想象到的任何項(xiàng)目,幾乎都可以找到一個(gè)相應(yīng)的 Python 包。

然而,盡管高級(jí)語(yǔ)言的簡(jiǎn)化語(yǔ)法使其易于學(xué)習(xí)和使用,但和 C 或 C++ 等低級(jí)語(yǔ)言相比,它的速度更慢。

麻省理工學(xué)院計(jì)算機(jī)科學(xué)與人工智能實(shí)驗(yàn)室(CSAIL)的研究人員希望通過(guò) Codon 來(lái)改變這一現(xiàn)狀,Codon 是一種基于 Python 的編譯器,允許用戶編寫(xiě)與 C 或 C++ 程序一樣高效運(yùn)行的 Python 代碼,同時(shí)可以定制和適應(yīng)不同的需求和環(huán)境。

該研究的最新論文《Codon: A Compiler for High-Performance Pythonic Applications and DSLs》發(fā)表在了 2 月份的第 32 屆 ACM SIGPLAN 編譯器構(gòu)建國(guó)際會(huì)議上。

項(xiàng)目鏈接:https://github.com/exaloop/codon

論文:https://dl.acm.org/doi/abs/10.1145/3578360.3580275

在開(kāi)發(fā)工作中,人們需要使用編譯器將源代碼轉(zhuǎn)換為可由計(jì)算機(jī)處理器執(zhí)行的機(jī)器代碼,Codon 能幫助開(kāi)發(fā)者在 Python 中創(chuàng)建新的領(lǐng)域特定語(yǔ)言(DSL),同時(shí)仍然獲得其他語(yǔ)言的性能優(yōu)勢(shì)。

「常規(guī) Python 會(huì)被編譯成所謂的字節(jié)碼,該字節(jié)碼在虛擬機(jī)中執(zhí)行,這就會(huì)讓速度慢上很多,」Codon 論文的主要作者 Ariya Shajii 表示,「通過(guò) Codon,我們則進(jìn)行本地編譯,因此你可以直接在 CPU 上運(yùn)行最終結(jié)果 —— 不經(jīng)過(guò)中間虛擬機(jī)或解釋器?!?/p>

e24fc900-d2ab-11ed-bfe3-dac502259ad0.png



Codon 的編譯管道包括類型檢查,使其能夠更高效地運(yùn)行 Python 代碼。

基于 Python 的編譯器帶有適用于 Linux 和 macOS 的預(yù)構(gòu)建二進(jìn)制文件,你還可以從源代碼構(gòu)建或生成可執(zhí)行文件。「使用 Codon,你可以像 Python 一樣分發(fā)源代碼,或者你可以將它編譯成二進(jìn)制文件,」Shajii 說(shuō)?!溉绻阆敕职l(fā)一個(gè)二進(jìn)制文件,它將與像 C++ 這樣的語(yǔ)言一樣,例如一個(gè) Linux 二進(jìn)制文件或一個(gè) Mac 二進(jìn)制文件?!?/p>

為了讓 Codon 更快,研究人員決定在編譯時(shí)執(zhí)行類型檢查。類型檢查涉及將數(shù)據(jù)類型(例如整數(shù)、字符串、字符或浮點(diǎn)數(shù)等)分配給值。例如數(shù)字 5 可以分配為整數(shù),字母 c 可以分配為字符,單詞 hello 可以分配為字符串,十進(jìn)制數(shù) 3.14 可以分配為浮點(diǎn)數(shù)。

「在常規(guī) Python 中,所有類型都給了 runtime,」Shajii 介紹道?!甘褂?Codon,我們?cè)诰幾g過(guò)程中進(jìn)行類型檢查,這讓我們避免了在 runtime 進(jìn)行所有昂貴的類型操作。」

MIT CSAIL 首席研究員 Saman Amarasinghe 補(bǔ)充說(shuō),「如果你有一種動(dòng)態(tài)語(yǔ)言(比如 Python),每次你有一些數(shù)據(jù)時(shí),你都需要在它周圍保留很多額外的元數(shù)據(jù),以確定 runtime 的類型。Codon 取消了這種元數(shù)據(jù),因此代碼速度更快,數(shù)據(jù)更小?!?/p>

根據(jù) Shajii 的說(shuō)法,Codon 在運(yùn)行時(shí)沒(méi)有任何不必要的數(shù)據(jù)或類型檢查,所以開(kāi)銷為零。在性能方面,「Codon 通常與 C++ 不相上下。與 Python 相比,我們通??吹降氖?10 到 100 倍的速度改進(jìn)?!?/p>

另一方面,Codon 的方法有其權(quán)衡。「我們進(jìn)行這種靜態(tài)類型檢查,并且不允許使用 Python 的一些動(dòng)態(tài)特性,比如在 runtime 動(dòng)態(tài)更改類型,」Shajii 表示。

「還有一些 Python 庫(kù)我們還沒(méi)有實(shí)現(xiàn)?!笰marasinghe 補(bǔ)充說(shuō),「Python 已經(jīng)過(guò)無(wú)數(shù)人的實(shí)際測(cè)試,而 Codon 還沒(méi)有達(dá)到那樣的水平,它需要運(yùn)行更多的程序,獲得更多的反饋,并加固更多。達(dá)到常規(guī) Python 的穩(wěn)定水平需要一些時(shí)間?!?/p>

Codon 最初設(shè)計(jì)用于基因組學(xué)和生物信息學(xué)的工作。研究人員嘗試了大約 10 個(gè)用 Python 編寫(xiě)的常用基因組學(xué)應(yīng)用程序,并使用 Codon 對(duì)其進(jìn)行了編譯,與最初的手動(dòng)優(yōu)化實(shí)現(xiàn)相比實(shí)現(xiàn)了 5 到 10 倍的加速。

「如今這些領(lǐng)域的數(shù)據(jù)集已變得非常大,而像 Python 和 R 這樣的高級(jí)語(yǔ)言速度太慢,無(wú)法處理每組測(cè)序 TB 級(jí)的數(shù)據(jù)量,」Shajii 說(shuō)道?!高@就是我們想要填補(bǔ)的空白 —— 通過(guò)構(gòu)建一種無(wú)需寫(xiě) C 或 C++ 代碼即可處理大數(shù)據(jù)的方法,從而為非計(jì)算機(jī)科學(xué)或?qū)I(yè)開(kāi)發(fā)者的領(lǐng)域?qū)<姨峁椭!?/p>

e26edb24-d2ab-11ed-bfe3-dac502259ad0.png

上述圖表在幾個(gè)基準(zhǔn)上比較了 Python(CPython 3)、PyPy、Codon 和 C++ 的性能。y 軸顯示 Codon 實(shí)現(xiàn)相對(duì)于 CPython 實(shí)現(xiàn)的加速。MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM

除了基因組學(xué),Codon 還可以應(yīng)用于處理海量數(shù)據(jù)集的類似應(yīng)用程序,以及基于 Python 的編譯器支持的 GPU 編程和并行編程等領(lǐng)域。事實(shí)上,Codon 現(xiàn)在正通過(guò)初創(chuàng)公司 Exaloop 在生物信息學(xué)、深度學(xué)習(xí)和量化金融領(lǐng)域進(jìn)行商業(yè)應(yīng)用,Shajii 創(chuàng)立了該公司,旨在將 Codon 從學(xué)術(shù)項(xiàng)目轉(zhuǎn)變?yōu)樾袠I(yè)應(yīng)用。

為了使 Codon 能夠適應(yīng)不同領(lǐng)域,該團(tuán)隊(duì)開(kāi)發(fā)了一個(gè)插件系統(tǒng)?!杆拖褚粋€(gè)可擴(kuò)展的編譯器,」Shajii 說(shuō)道?!改憧梢詾榛蚪M學(xué)或其他領(lǐng)域編寫(xiě)插件,這些插件可以有新的庫(kù)和新的編譯器優(yōu)化?!?/p>

此外,公司和機(jī)構(gòu)可以使用 Codon 來(lái)制作原型和開(kāi)發(fā)自己的應(yīng)用程序?!肝覀兛吹降囊环N模式是:人們使用 Python 進(jìn)行原型設(shè)計(jì)和測(cè)試,因?yàn)樗子谑褂?,但到了某些重要事?xiàng)上,他們就不得不重寫(xiě)應(yīng)用程序,或讓其他人用 C 或 C++ 在更大的數(shù)據(jù)集上進(jìn)行重寫(xiě)與測(cè)試,」Shajii 表示?!竿ㄟ^(guò) Codon,你就可以完全使用 Python,并獲得兩全其美的好處?!?/p>

關(guān)于 Codon 的未來(lái),Shajii 和他的團(tuán)隊(duì)目前正在研究廣泛使用的 Python 庫(kù)的本地實(shí)現(xiàn),以及特定于庫(kù)的優(yōu)化,以幫助人們從這些庫(kù)中獲得更好的性能。他們還計(jì)劃創(chuàng)建一個(gè)廣受歡迎的功能:Codon 的 WebAssembly 后端,以支持在 Web 瀏覽器上運(yùn)行代碼。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2116

    瀏覽量

    74603
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1653

    瀏覽量

    49751
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8481

    瀏覽量

    133876

原文標(biāo)題:這款編譯器能讓Python和C++一樣快!最高提速百倍,MIT出品!

文章出處:【微信號(hào):CVer,微信公眾號(hào):CVer】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    SEGGER編譯器優(yōu)化和安全技術(shù)介紹 支持最新CC++語(yǔ)言

    SEGGER編譯器是專門為ARM和RISC-V微控制設(shè)計(jì)的優(yōu)化C/C++編譯器。它建立在強(qiáng)大的Clang前端上,支持最新的
    的頭像 發(fā)表于 06-04 15:31 ?1785次閱讀
    SEGGER<b class='flag-5'>編譯器</b>優(yōu)化和安全技術(shù)介紹 支持最新<b class='flag-5'>C</b>和<b class='flag-5'>C++</b>語(yǔ)言

    C++編譯器數(shù)值性能比較

    現(xiàn)在市面上,主流的C/C++編譯器包括M$的CL、gcc、Intel的icl、PGI的pgcc及Codegear的bcc(原來(lái)屬于Borland公司)。Windows上使用最多的自然是cl,而在更廣闊的平臺(tái)上,gcc則是
    發(fā)表于 09-10 11:54 ?8次下載

    Linux下C/C++編譯器gcc使用指南

    1.gcc包含的c/c++編譯器 gcc,cc與c++,g++ gcc和cc是一樣的,c++和g
    發(fā)表于 11-02 10:59 ?0次下載

    英特爾C++和Fortran編譯器的逐漸優(yōu)化過(guò)程介紹

    這是個(gè)介紹視頻,解釋了英特爾?C++和Fortran編譯器提供的逐步優(yōu)化。
    的頭像 發(fā)表于 11-05 06:21 ?3324次閱讀

    MATLAB 64位C語(yǔ)言和C++編譯器應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是MATLAB 64位C語(yǔ)言和C++編譯器應(yīng)用程序免費(fèi)下載。
    發(fā)表于 05-21 08:00 ?4次下載
    MATLAB 64位<b class='flag-5'>C</b>語(yǔ)言和<b class='flag-5'>C++</b><b class='flag-5'>編譯器</b>應(yīng)用程序免費(fèi)下載

    阿里云基礎(chǔ)軟件C/C++編譯器的工作現(xiàn)狀及挑戰(zhàn)

    本文主要詳細(xì)介紹了阿里云CC++編譯器(GCC、LLVM)工作現(xiàn)狀、主流編譯器(GCC、LLVM)開(kāi)源社區(qū)參與現(xiàn)狀以及多架構(gòu)(RISC-V)對(duì)數(shù)據(jù)中心的挑戰(zhàn)。
    的頭像 發(fā)表于 06-23 15:26 ?3181次閱讀
    阿里云基礎(chǔ)軟件<b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>編譯器</b>的工作現(xiàn)狀及挑戰(zhàn)

    SuperH C/C++ 編譯器包 V.9.04 用戶手冊(cè)

    SuperH C/C++ 編譯器包 V.9.04 用戶手冊(cè)
    發(fā)表于 01-12 18:45 ?1次下載
    SuperH <b class='flag-5'>C</b>/<b class='flag-5'>C++</b> <b class='flag-5'>編譯器</b>包 V.9.04 用戶手冊(cè)

    C/C++編譯器的缺省字節(jié)對(duì)齊方式

    C/C++編譯器的缺省字節(jié)對(duì)齊方式為自然對(duì)界。即在缺省情況下,編譯器為每個(gè)變量或是數(shù)據(jù)單元按其自然對(duì)界條件分配空間。
    的頭像 發(fā)表于 04-15 11:24 ?1253次閱讀

    SuperH C/C++ 編譯器包 V.9.01 用戶手冊(cè)

    SuperH C/C++ 編譯器包 V.9.01 用戶手冊(cè)
    發(fā)表于 04-21 19:55 ?0次下載
    SuperH <b class='flag-5'>C</b>/<b class='flag-5'>C++</b> <b class='flag-5'>編譯器</b>包 V.9.01 用戶手冊(cè)

    SuperH C/C++ 編譯器包 V.9.04 用戶手冊(cè)

    SuperH C/C++ 編譯器包 V.9.04 用戶手冊(cè)
    發(fā)表于 07-03 18:38 ?4次下載
    SuperH <b class='flag-5'>C</b>/<b class='flag-5'>C++</b> <b class='flag-5'>編譯器</b>包 V.9.04 用戶手冊(cè)

    RX系列V3.06.00的C/C++編譯器包數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《RX系列V3.06.00的C/C++編譯器包數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 01-26 15:57 ?1次下載
    RX系列V3.06.00的<b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>編譯器</b>包數(shù)據(jù)手冊(cè)

    C7000優(yōu)化C/C++編譯器

    電子發(fā)燒友網(wǎng)站提供《C7000優(yōu)化C/C++編譯器.pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>編譯器</b>

    TMS320C6000優(yōu)化C/C++編譯器v8.3.x

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000優(yōu)化C/C++編譯器v8.3.x.pdf》資料免費(fèi)下載
    發(fā)表于 11-01 09:35 ?1次下載
    TMS320<b class='flag-5'>C</b>6000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>編譯器</b>v8.3.x

    MSP430優(yōu)化C/C++編譯器v21.6.0.LTS

    電子發(fā)燒友網(wǎng)站提供《MSP430優(yōu)化C/C++編譯器v21.6.0.LTS.pdf》資料免費(fèi)下載
    發(fā)表于 11-08 14:57 ?0次下載
    MSP430優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>編譯器</b>v21.6.0.LTS

    Triton編譯器支持的編程語(yǔ)言

    Triton編譯器支持的編程語(yǔ)言主要包括以下幾種: 、主要編程語(yǔ)言 Python :Triton編譯器通過(guò)Python接口提供了對(duì)Trit
    的頭像 發(fā)表于 12-24 17:33 ?809次閱讀