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

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

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

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

適用于Python代碼的開源式即時編譯器NUMBA介紹

NVIDIA英偉達 ? 來源:NVIDIA英偉達 ? 作者:NVIDIA英偉達 ? 2022-07-08 09:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Numba 是一個適用于 Python 代碼的開源式即時編譯器。借助該編譯器,開發(fā)者可以使用標準 Python 函數(shù)在 CPUGPU 上加速數(shù)值函數(shù)。

什么是 NUMBA?

為了提高執(zhí)行速度,Numba 會在執(zhí)行前立即將 Python 字節(jié)代碼轉(zhuǎn)換為機器代碼。

Numba 可用于使用可調(diào)用的 Python 對象(稱為修飾器)來優(yōu)化 CPU 和 GPU 功能。修飾器是一個函數(shù),它將另一個函數(shù)作為輸入,進行修改,并將修改后的函數(shù)返回給用戶。這種模組化可減少編程時間,并提高 Python 的可擴展性。

Numba 還可與 NumPy 結(jié)合使用,后者是一個復(fù)雜數(shù)學(xué)運算的開源 Python 庫,專為處理統(tǒng)計數(shù)據(jù)而設(shè)計。調(diào)用修飾器時,Numa 將 Python 和/或 NumPy 代碼的子集轉(zhuǎn)換為針對環(huán)境自動優(yōu)化的字節(jié)碼。它使用 LLVM,這是一個面向 API 的開源庫,用于以編程方式創(chuàng)建機器原生代碼。Numba 針對各種 CPU 和 GPU 配置,提供了多種快速并行化 Python 代碼的選項,有時僅需一條命令即可。與 NumPy 結(jié)合使用時,Numba 會為不同的數(shù)組數(shù)據(jù)類型和布局生成專用代碼,進而優(yōu)化性能。

為何選擇 NUMBA?

Python 是一種廣泛應(yīng)用于數(shù)據(jù)科學(xué)的高效動態(tài)編程語言。由于其采用簡潔明了的語法,并具有標準數(shù)據(jù)結(jié)構(gòu)、全面的標準庫、高水準的文檔、龐大的庫和工具生態(tài)系統(tǒng)以及大型開放社區(qū),因此深受歡迎。不過,也許最重要的原因是,Python 等動態(tài)型態(tài)解釋語言能夠帶來超高效率。

但是,對于 Python 來說,這既是最大的優(yōu)勢,也是最大的劣勢。“它的靈活性和無類型的高級語法可能會導(dǎo)致數(shù)據(jù)和計算密集型程序的性能不佳,因為運行本地編譯代碼要比運行動態(tài)解釋代碼快很多倍。因此,注重效率的 Python 程序員通常會使用 C 語言重寫最內(nèi)層的循環(huán),然后從 Python 調(diào)用已編譯的 C 語言函數(shù)。許多項目都力求簡化這種優(yōu)化(例如 Cython),但它們通常需要學(xué)習(xí)新的語法。雖然 Cython 顯著提高了性能,但可能需要對 Python 代碼進行艱巨的手動修改工作。

Numba 被視作 Cython 的替代方案,并且要簡單得多。它最大的吸引力在于無需學(xué)習(xí)新的語法,也無需替換 Python 解釋器、運行單獨的編譯步驟或安裝 C/C++ 編譯器。只需將@jit Numba 修飾器應(yīng)用于 Python 函數(shù)即可。這樣,在運行時即可進行編譯(即“即時”或 JIT 編譯)。Numba 能夠動態(tài)編譯代碼,這意味著,您還可以享受 Python 帶來的靈活性。此外,Python 程序中由 Numba 編譯的數(shù)值算法,可以接近使用編譯后的 C 語言或 FORTRAN 語言編寫的程序的速度;并且與原生 Python 解釋器執(zhí)行的相同程序相比,運行速度最多快 100 倍。這是一項重要進步,推動了高效編程與高性能計算的完美結(jié)合。

07b24ae2-fdf5-11ec-ba43-dac502259ad0.png

Numba 執(zhí)行圖

Numba 專為面向數(shù)組的計算任務(wù)而設(shè)計,與應(yīng)用廣泛的 NumPy 庫類似。在面向數(shù)組的計算任務(wù)中,數(shù)據(jù)并行性與 GPU 等加速器自然契合。Numba 理解 NumPy 數(shù)組類型,并將其用于生成高效的編譯代碼,以在 GPU 或多核 CPU 上執(zhí)行。所需的編程工作非常簡單,只需添加一個 @vectorize 函數(shù)修飾器,指示 Numba 在運行時生成編譯的向量化函數(shù)版本。這樣,它便可用于在 GPU 上并行處理數(shù)據(jù)數(shù)組了。

除了為 CPU 或 GPU 即時編譯 NumPy 數(shù)組代碼外,Numba 還公開了“CUDA Python”:這是適用于 NVIDIA GPU 的 NVIDIA CUDA編程模型,采用 Python 語法編寫。加速 Python 后,它可以從膠水語言擴展至可高效執(zhí)行數(shù)字代碼的完整編程環(huán)境。

Numba 與 Python 數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)中其他工具的結(jié)合使用,改變了 GPU 計算的體驗。Jupyter Notebook 提供基于瀏覽器的文檔創(chuàng)建環(huán)境,允許結(jié)合使用 Markdown 文本、可執(zhí)行代碼以及繪圖和圖像的圖形輸出。Jupyter 在教學(xué)、記錄科學(xué)分析和交互式原型設(shè)計領(lǐng)域深受歡迎。

Numba 已在 200 多種不同的平臺配置下進行了測試。它基于 IntelAMD x86、POWER8/9、ARM CPU 以及 NVIDIA 和 AMD GPU 上的 Windows、Apple Macintosh、Linux 操作系統(tǒng)運行,大多數(shù)系統(tǒng)均可使用預(yù)編譯的二進制文件。

用例

科學(xué)計算

數(shù)組處理應(yīng)用廣泛,從地理信息系統(tǒng)到計算復(fù)雜的幾何形狀,無一不及。電信公司使用數(shù)組來優(yōu)化無線網(wǎng)絡(luò)的設(shè)計,而醫(yī)療健康研究人員則使用數(shù)組分析包含內(nèi)臟器官信息的波形。數(shù)組還可用于減少語言處理、天文成像和雷達/聲納中的外部噪聲。

有了 Python 等語言,開發(fā)者無需進行大量數(shù)學(xué)訓(xùn)練,即可使用這些領(lǐng)域的應(yīng)用程序。但是,Python 在數(shù)值密集型計算中存在性能缺陷,這會嚴重影響某些應(yīng)用程序的處理速度。Numba 是其中一個解決方案。許多人都認為它易于使用,因此對于沒有 C 語言等比較復(fù)雜語言經(jīng)驗的學(xué)生和開發(fā)者來說,意義重大。

NUMBA 對數(shù)據(jù)科學(xué)家的重要意義

在數(shù)據(jù)科學(xué)中,迭代開發(fā)是一種非常實用的省時方案,因為開發(fā)者能夠通過觀察結(jié)果來不斷地改進程序。Python 等解釋語言在這種情景中尤為有用。但是,Python 在高度數(shù)學(xué)運算中存在性能限制,這可能會造成瓶頸,從而減緩整體處理速度并限制開發(fā)者的工作效率。

Numba 為開發(fā)者提供了一種調(diào)用編譯器函數(shù)的簡單方法,顯著提升了大型計算和數(shù)組的性能,從而解決了這一問題。Numba 簡單易學(xué),并使數(shù)據(jù)科學(xué)家無需執(zhí)行使用編譯語言編寫子程序這一復(fù)雜任務(wù),從而加快速度。

NUMBA 為何可在 GPU 上表現(xiàn)更突出

在架構(gòu)方面,CPU 僅由幾個具有大緩存內(nèi)存的核心組成,一次只可以處理幾個軟件線程。相比之下,GPU 由數(shù)百個核心組成,可以同時處理數(shù)千個線程。

07d8cee2-fdf5-11ec-ba43-dac502259ad0.jpg

Numba 通過以下方式支持 CUDA GPU 編程:在 CUDA 執(zhí)行模型后,直接將受限的 Python 代碼子集編譯到 CUDA 內(nèi)核函數(shù)和設(shè)備函數(shù)中。使用 Numba 編寫的內(nèi)核看起來可以直接訪問 NumPy 數(shù)組,而這些數(shù)組在 CPU 和 GPU 之間自動傳輸。這為 Python 開發(fā)者提供了一個輕松進行 GPU 加速計算的方法,而且無需學(xué)習(xí)新語法或語言,即可學(xué)會如何應(yīng)用日益復(fù)雜的 CUDA 編碼。借助 CUDA Python 和 Numba,您可以一舉兩得:使用 Python 實現(xiàn)快速迭代開發(fā),同時達到針對 CPU 和 NVIDIA GPU 的編譯語言的速度。

我們使用配備 NVIDIA P100 GPU 和 Intel Xeon E5-2698 v3 CPU 的服務(wù)器進行了一次測試,結(jié)果顯示,使用 Numba 編譯的 CUDA Python Mandelbrot 代碼比只使用 Python 快了近 1700 倍。與 CPU 上的單線程 Python 代碼相比,性能提升是多個因素的共同作用,包括編譯、并行化和 GPU 加速。但是,它說明單是添加一個 GPU 即可實現(xiàn)加速。

NVIDIA GPU 加速的端到端數(shù)據(jù)科學(xué)

基于 CUDA-X AI 創(chuàng)建的 NVIDIA RAPIDS開源軟件庫套件使您完全能夠在 GPU 上執(zhí)行端到端數(shù)據(jù)科學(xué)和分析流程。此套件依靠 NVIDIA CUDA 基元進行低級別計算優(yōu)化,但通過用戶友好型 Python 接口實現(xiàn)了 GPU 并行化和高帶寬顯存速度。

借助 RAPIDS GPU DataFrame,數(shù)據(jù)可以通過一個類似 Pandas 的接口加載到 GPU 上,然后用于各種連接的機器學(xué)習(xí)和圖形分析算法,而無需離開 GPU。這種級別的互操作性可通過 Apache Arrow 等庫實現(xiàn),并有助于實現(xiàn)端到端流程(從數(shù)據(jù)準備到機器學(xué)習(xí)再到深度學(xué)習(xí))的加速。

07f8c85a-fdf5-11ec-ba43-dac502259ad0.png

RAPIDS 支持在許多熱門數(shù)據(jù)科學(xué)庫之間共享設(shè)備內(nèi)存。這樣可將數(shù)據(jù)保留在 GPU 上,并省去了來回復(fù)制主機內(nèi)存的高昂成本。

0855baf6-fdf5-11ec-ba43-dac502259ad0.png

RAPIDS 團隊正在開發(fā)和參與許多開源項目,并與眾多開源項目(包括 Apache Arrow、Numba、XGBoost、Apache Spark、scikit-learn 等)密切協(xié)作,確保 GPU 加速數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)中的所有組件順暢地協(xié)同工作。

審核編輯:湯梓紅

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

    關(guān)注

    68

    文章

    11074

    瀏覽量

    216875
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5299

    瀏覽量

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

    關(guān)注

    1

    文章

    1661

    瀏覽量

    50165
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86650

原文標題:NVIDIA 大講堂 | 什么是 NUMBA ?

文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    適用于PIC MCU的MPLAB XC8 C編譯器用戶指南

    電子發(fā)燒友網(wǎng)站提供《適用于PIC MCU的MPLAB XC8 C編譯器用戶指南.pdf》資料免費下載
    發(fā)表于 01-22 16:45 ?0次下載
    <b class='flag-5'>適用于</b>PIC MCU的MPLAB XC8 C<b class='flag-5'>編譯器</b>用戶指南

    什么樣的代碼會被編譯器優(yōu)化

    現(xiàn)在的編譯器有多智能,可能你辛辛苦苦寫的代碼,在編譯器看來就是幾句廢話,直接被刪除掉。
    的頭像 發(fā)表于 01-16 16:38 ?585次閱讀

    適用于Oracle的Python連接:可訪問托管以及非托管的數(shù)據(jù)庫

    適用于 Oracle 的 Python 連接 適用于 Oracle 的 Python 連接
    的頭像 發(fā)表于 01-14 10:30 ?459次閱讀

    Triton編譯器與GPU編程的結(jié)合應(yīng)用

    Triton編譯器簡介 Triton編譯器是一種針對并行計算優(yōu)化的編譯器,它能夠自動將高級語言代碼轉(zhuǎn)換為針對特定硬件優(yōu)化的低級代碼。Trit
    的頭像 發(fā)表于 12-25 09:13 ?818次閱讀

    Triton編譯器如何提升編程效率

    在現(xiàn)代軟件開發(fā)中,編譯器扮演著至關(guān)重要的角色。它們不僅將高級語言代碼轉(zhuǎn)換為機器可執(zhí)行的代碼,還通過各種優(yōu)化技術(shù)提升程序的性能。Triton 編譯器作為一種先進的
    的頭像 發(fā)表于 12-25 09:12 ?739次閱讀

    Triton編譯器在高性能計算中的應(yīng)用

    先進的編譯技術(shù),為高性能計算提供了強大的支持。 Triton編譯器簡介 Triton編譯器是一種開源編譯器框架,旨在為異構(gòu)計算環(huán)境提供高效
    的頭像 發(fā)表于 12-25 09:11 ?952次閱讀

    Triton編譯器的優(yōu)化技巧

    在現(xiàn)代計算環(huán)境中,編譯器的性能對于軟件的運行效率至關(guān)重要。Triton 編譯器作為一個先進的編譯器框架,提供了一系列的優(yōu)化技術(shù),以確保生成的代碼既高效又適應(yīng)不同的硬件架構(gòu)。 1. 指令
    的頭像 發(fā)表于 12-25 09:09 ?972次閱讀

    Triton編譯器的常見問題解決方案

    Triton編譯器作為一款專注于深度學(xué)習(xí)的高性能GPU編程工具,在使用過程中可能會遇到一些常見問題。以下是一些常見問題的解決方案: 一、安裝與依賴問題 檢查Python版本 Triton編譯器通常
    的頭像 發(fā)表于 12-24 18:04 ?2959次閱讀

    Triton編譯器安裝步驟詳解

    1. 系統(tǒng)要求 在開始安裝之前,請確保您的系統(tǒng)滿足以下要求: 操作系統(tǒng) :支持 Linux 或 Windows(通過 WSL 或 Cygwin)。 編譯器 :GCC 或 Clang。 CMake
    的頭像 發(fā)表于 12-24 17:35 ?2355次閱讀

    Triton編譯器支持的編程語言

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

    Triton編譯器與其他編譯器的比較

    的GPU編程框架,使開發(fā)者能夠編寫出接近手工優(yōu)化的高性能GPU內(nèi)核。 其他編譯器 (如GCC、Clang、MSVC等): 定位:通用編譯器,支持多種編程語言,廣泛應(yīng)用于各種軟件開發(fā)場景。 目標:提供穩(wěn)定、高效的
    的頭像 發(fā)表于 12-24 17:25 ?986次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個開源編譯器前端,它支持多種編程語言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個可擴展和可定制的編譯器框架,允許開發(fā)者添加新的編程語言特性和優(yōu)化技術(shù)
    的頭像 發(fā)表于 12-24 17:23 ?1666次閱讀

    Keil編譯器優(yōu)化方法

    我們都知道,代碼是可以通過編譯器優(yōu)化的,有的時候,為了提高運行速度或者減少代碼尺寸,會開啟優(yōu)化選項。
    的頭像 發(fā)表于 10-23 16:35 ?2031次閱讀
    Keil<b class='flag-5'>編譯器</b>優(yōu)化方法

    AI編譯器技術(shù)剖析

    隨著人工智能技術(shù)的飛速發(fā)展,AI編譯器作為一種新興的編譯技術(shù)逐漸進入人們的視野。AI編譯器不僅具備傳統(tǒng)編譯器的功能,如將高級語言編寫的源代碼
    的頭像 發(fā)表于 07-17 18:28 ?2669次閱讀

    人工智能編譯器與傳統(tǒng)編譯器的區(qū)別

    人工智能編譯器(AI編譯器)與傳統(tǒng)編譯器在多個方面存在顯著的差異。這些差異主要體現(xiàn)在設(shè)計目標、功能特性、優(yōu)化策略、適用范圍以及技術(shù)復(fù)雜性等方面。以下是對兩者區(qū)別的詳細探討,旨在全面解析
    的頭像 發(fā)表于 07-17 18:19 ?2932次閱讀
    主站蜘蛛池模板: 一级特黄aaa大片在线观看 | 萌白酱白丝护士服喷水铁牛tv | 午夜影院a | 美女视频黄a视频免费全过程 | 狠狠色狠狠色狠狠五月ady | 在线观看色视频网站 | 在线看你懂得 | 色婷婷久久免费网站 | 久久国产三级 | 91在线免费观看网站 | 女bbbbxxxx毛片视频丶 | 亚洲综合成人网在线观看 | 久久久久久国产精品免费免费 | 国产免费高清视频在线观看不卡 | 色综合成人丁香 | 国产gav成人免费播放视频 | 视频一区中文字幕 | 在线亚洲免费 | 俺去啦网婷婷 | 日本黄页网 | 免费一级特黄 欧美大片 | 日本在线免费 | 欧美午夜在线播放 | 中文在线 | 中文 | 国产精品女人在线观看 | 天天色综| 一级特黄aa大片一又好看 | 四虎国产精品永久在线播放 | 又粗又硬又爽又黄毛片 | 亚洲一区中文 | 九色精品在线 | 国产亚洲精品久久久久久午夜 | 亚洲乱码一二三四区 | 韩国三级理论在线观看视频 | 美脚连裤袜老师正在播放 | 欧美美女福利视频 | 亚洲资源在线观看 | 亚洲影视自拍揄拍愉拍 | 可以免费播放的在线视频 | 亚洲综合婷婷 | 加勒比日本道 |