91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

比Python快68000倍!Mojo正式發(fā)布

jf_WZTOguxH ? 來源:AI前線 ? 2023-09-08 16:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

自 5 月 2 日首次亮相以來,Modular 公司的 Mojo 編程語言引起了開發(fā)人員的極大興趣,已經(jīng)有超 12 萬開發(fā)人員注冊使用 Mojo Playground,19 萬開發(fā)者熱情參與 Discord 與 GitHub 討論。Fast.ai 聯(lián)合創(chuàng)始人、數(shù)據(jù)科學(xué)家 Jeremy Howard 更是表示,“Mojo 可能是近幾十年來最大的編程語言進步?!?/p>

9 月 7 日,Modular 公司宣布正式發(fā)布 Mojo:Mojo 現(xiàn)在已經(jīng)開放本地下載——初步登陸 Linux 系統(tǒng),并將很快提供 Mac 與 Windows 版本。

8a18f9a8-4e09-11ee-a25d-92fbcf53809c.jpg

Modular 公司由 LLVM 和 Swift 編程語言的聯(lián)合創(chuàng)始人 Chris Lattner 創(chuàng)辦,此前剛獲得 1 億美元(約 7 億人民幣)融資。Chris Lattner 表示,本輪融資總額達到 1.3 億美元,所得款項將用于產(chǎn)品擴展、硬件支持和推動自研 AI 編程語言 Mojo 的進一步發(fā)展。

據(jù)介紹,Mojo Playground 提供的只是一套簡單的語言展示,而本地 Mojo 工具鏈則可幫助開發(fā)人員完成更多工作。本地開發(fā)者工具將開放全部 Mojo 功能,包括一套完整的編譯器功能與 IDE 工具,讓開發(fā)者能夠輕松對 Mojo 應(yīng)用進行構(gòu)建與迭代。

Mojo:面向 AI 開發(fā)者的新型編程語言

Mojo 是一種面向 AI 開發(fā)者的新型編程語言。隨著時間推移,它將逐步成長為 Python 的超集。Mojo 已經(jīng)支持與任意 Python 代碼的無縫集成,并提供可擴展的編程模型以支撐各類關(guān)鍵性能系統(tǒng),包括在 AI 場景中普遍存在的加速器(例如 GPU)。

Mojo 能夠切實滿足開發(fā)者需求,引導(dǎo)大家逐步采用新功能,從而在必要時獲得高性能體驗。具體來說,Mojo 可以為開發(fā)者帶來的主要收益:

  • 一種語言編寫所有內(nèi)容:Mojo 能夠隨時隨地服務(wù)于 AI 開發(fā)者,將 Python 的可用性與以往強制開發(fā)者使用 C、C++ 或 CUDA 的系統(tǒng)編程功能結(jié)合起來。開發(fā)者可以在公共代碼庫上工作,從而簡化從研究到生產(chǎn)的整個工作流程。

  • 突破 Python 性能極限:時至今日,Python 已經(jīng)無處不在。但對于需要更高性能或特殊硬件的任務(wù),Python 的表現(xiàn)往往不那么理想。Mojo 能夠發(fā)揮 CPU 的性能潛力,并可良好支持 GPU 和 ASIC 等外部加速器,提供與 C++ 和 CUDA 相當?shù)淖吭叫阅堋?/p>

  • 對接完整 Python 生態(tài)系統(tǒng):Mojo 提供與 Python 生態(tài)系統(tǒng)間的全面互操作性,使其能夠無縫利用 Python 庫資源,同時發(fā)揮 Mojo 自身的功能與性能優(yōu)勢。例如,開發(fā)者可以將 NumPy 和 Matpotlib 同自己的 Mojo 代碼無縫混合起來。

  • 升級 AI 工作負載:Mojo 緊密集成有模塊化 AI 引擎,允許開發(fā)者通過自定義操作輕松擴展自己的 AI 工作負載,包括預(yù)處理、后處理操作和高性能數(shù)學(xué)算法。開發(fā)者還可以引入內(nèi)核融合、圖重寫、sharp 函數(shù)等。

通過對現(xiàn)有 Python 代碼做一點簡單變更,開發(fā)者就可以使用 Mojo 對高計算強度工作負載進行顯著加速(最高可提速 6.8 萬倍)。目前,Mojo 的實際應(yīng)用案例包括:

  • 知名博主 Maxim Zaks 已經(jīng)用 Mojo 實現(xiàn)了多個樹數(shù)據(jù)結(jié)構(gòu),并發(fā)布了相關(guān)博文(https://pub.aimind.so/a-high-level-introduction-to-fibytree-bd7f8775d815)和一些初步基準測試結(jié)果(https://pub.aimind.so/fibytree-vs-set-and-sortedset-7b4e6b56cac8)。

  • GitHub 用戶 MadAlex1997 在 Mojo 中構(gòu)建了 N 維數(shù)組的實現(xiàn)(https://github.com/MadAlex1997/Mojo-Arrays)。

    為何能比 Python 快 68000 倍?

Mojo 是 Python 家族的一員,但有著遠大的目標——想要與 Python 生態(tài)系統(tǒng)完全兼容,因此開發(fā)人員可以繼續(xù)使用自己熟悉的工具。Mojo 旨在通過保留 Python 的動態(tài)特性,同時為系統(tǒng)編程添加新原語,逐漸成為 Python 的超集。

LLVM 和 Swift 編程語言的聯(lián)合創(chuàng)始人、Modular 公司 CEO Chris Lattner 此前在 Hacker News 上表示:“我們的目標不是讓動態(tài) Python 神奇地快速。雖然我們在動態(tài)代碼方面要快得多(因為我們有編譯器而不是解釋器),但這并不是依靠‘足夠智能’的編譯器來消除動態(tài)性”。

據(jù)介紹,Mojo 最初的目標是比 Python 快 35000 倍,近日該團隊表示,Mojo 將動態(tài)與靜態(tài)語言的優(yōu)點結(jié)合起來,一舉將性能提升達 Python 的 68000 倍

Mojo 團隊在系列博文中介紹了 Mojo 是如何比 Python 快 68000 倍的:在第一篇博文中,團隊嘗試將代碼移植為 Mojo,從而獲得了約 90 倍的性能提升;在第二篇博文中,團隊對代碼進行矢量化與并行化,又將性能提升了 2.6 萬倍;在第三篇博文中,團隊展示如何通過新的性能技術(shù)全面超越 3.5 萬倍的程序加速目標。

具體來說,Mojo 團隊首先用簡單端口將 Python 程序提速 89 倍;之后通過針對性優(yōu)化和利用現(xiàn)代 CPU 的算力潛能,又將速度提升 2.6 萬倍。Mojo 團隊提出的并行策略是,每個 CPU 核心都應(yīng)負責(zé)處理同等數(shù)量的代碼行。

然而,只有當跨行工作負載相同時,對負載進行拆分以保證各個線程 worker 獲取其中一組代碼行才具有可行性;但曼德勃羅集并不是這樣。以這種方式進行拆分會引發(fā)負載不均衡問題,這是因為曼德勃羅集中的一個像素可能在單次迭代后完成,而另一像素則可能經(jīng)歷 MAX_ITERS 多次迭代。也就是說,各個行的迭代次數(shù)并不相等,會導(dǎo)致某些率先完成計算的線程處于閑置狀態(tài),不利于全面挖掘性能潛力。

為了演示這種不均衡問題,Mojo 團隊繪制了每個行在曼德勃羅集中執(zhí)行的迭代總數(shù)。如下圖所示,某些行在轉(zhuǎn)義之前只需要不到 1000 次迭代,但其他一些行則可能需要超 80 萬次迭代。

8a2d73b0-4e09-11ee-a25d-92fbcf53809c.png

各個行所執(zhí)行的迭代總數(shù)(以對數(shù)坐標系顯示)并非均勻分布。某些行(例如圖像中央部分的行)可能需要 80 多萬次迭代,而兩端的行則只需要 800 次左右迭代。

如果硬性為各個線程分配一定數(shù)量的連續(xù)行,就會發(fā)生全體線程都在等待,直至中間某組代碼行(被分配給某個核心)完成運行的情況。解決這個問題的辦法有很多,但最簡單的當然是過度拆分。也就是說,各個線程所獲得的不是一組平均分配的行,而是建立起一個工作負載池,再為每個行創(chuàng)建相應(yīng)的工作項。各線程則以循環(huán)方式不斷從線程池中拾取這些工作項。

好消息是 Mojo 擁有一個性能出色的并發(fā)運行時,所以我們用不著自行創(chuàng)建線程池或者設(shè)計循環(huán)拾取 / 執(zhí)行。Mojo 的運行時提供不少高級功能,可以充分利用這樣的多核心系統(tǒng)。

fn compute_row(y
    let cy = min_y + h * scale_y
    @parameter
    fn compute_vector[simd_width:Int](w
        let cx = min_x + iota[DType.float64, simd_width]() * scale_x
        output.simd_store[simd_width](Index(h,w), 
                mandelbrot_kernel(ComplexSIMD[DType.float64, 
                                              simd_width](cx,cy))
    vectorize[num_ports * simd_width, compute_vector](width)
with Runtime(num_cores()) as rt:
    let partition_factor = 16 # Is autotuned.
    parallelize[compute_row](rt, height, partition_factor * num_cores())

?可以分別在拆分成 2、4、8、16 和 32 份時評估程序性能,相應(yīng)結(jié)果如下:

8a426d88-4e09-11ee-a25d-92fbcf53809c.png

到這里,Mojo 團隊獲得了 2.3 倍于并行版本的加速效果,更是達到矢量化實現(xiàn)版本的 78 倍。那么,在每個行中做進一步劃分會不會讓性能更上一層樓?如果單行很大,那也許可以。但 Mojo 團隊這個示例中的最大單行長度也不過 4096。另外,同一行內(nèi)的各像素間往往更具相關(guān)性。這時候更適合采用單指令流多數(shù)據(jù)流(SIMD),避免工作被白白浪費在矢量通道當中。

8a72d1a8-4e09-11ee-a25d-92fbcf53809c.png

回顧整個旅程,Mojo 團隊先是對 Python 代碼實現(xiàn)了 2.6 萬倍性能提升,之后又使用超額訂閱達成提速 68847 倍的最終成績,并最終實現(xiàn)了 6.8 萬倍的 Python 提速效果;而在應(yīng)用超額訂閱之后,性能在此前并行版本的基礎(chǔ)上又提高了 1 倍。

如何使用 Mojo?

目前,開發(fā)者可以將 Mojo 下載至自己的本地計算機上,Modular 公司表示,Mojo 絕不只是編譯器那么簡單。

Mojo 工具箱

Mojo SDK 的首個版本即提供輕松開發(fā) Mojo 程序所需要的一切,具體包括以下工具選項:

  • Mojo 驅(qū)動程序:提供用于 read-eval-print-loop(REPL)的 shell,允許開發(fā)者構(gòu)建并運行 Mojo 程序、打包 Mojo 模塊、生成文檔和格式化代碼。

  • 面向 Visual Studio Code(VS Code)的擴展:支持各種生產(chǎn)力功能,例如語法高亮顯示、代碼補全等。

  • Jupyter 內(nèi)核:支持構(gòu)建和運行 Mojo notebook,包括使用 Python 代碼。

  • 支持調(diào)試(即將推出):進入并檢查正在運行中的 Mojo 程序,甚至可以將 C++ 與 Mojo 堆棧幀混合起來。本次發(fā)布的 SDK 初始版本將支持 x86/Linux 系統(tǒng),在后續(xù)更新中,團隊將進一步擴展至其他操作系統(tǒng)、硬件和工具功能。

8a88a956-4e09-11ee-a25d-92fbcf53809c.png

Mojo SDK 視圖示例

Mojo 驅(qū)動程序

與 Python 一樣,開發(fā)者可以運行 Mojo 命令在 REPL 中進行編程。下面是一個在 Mojo 中計算歐氏幾何距離的示例:

$ Mojo
Welcome to Mojo! 
Expressions are delimited by a blank line.
Type `:Mojo help` for further assistance.
1> %%python
2. import numpy as np
3. n = 10000000
4. anp = np.random.rand(n)
5. bnp = np.random.rand(n)
6> from tensor import Tensor
7. let n: Int = 10000000
8. var a = Tensor[DType.float64](n)
9. var b = Tensor[DType.float64](n)
10. for i in range(n):
11.    a[i] = anp[i].to_float64()
12.    b[i] = bnp[i].to_float64()
13> from math import sqrt
14. def Mojo_naive_dist(a: Tensor[DType.float64], b: Tensor[DType.float64]) -> Float64:
15.    var s: Float64 = 0.0
16.    n = a.num_elements()
17.    for i in range(n):
18.       dist = a[i] - b[i]
19.       s += dist*dist
20.    return sqrt(s)
23> fn Mojo_fn_dist(a: Tensor[DType.float64], b: Tensor[DType.float64]) -> Float64:
24.    var s: Float64 = 0.0
25.    let n = a.num_elements()
26.    for i in range(n):
27.       let dist = a[i] - b[i]
28.       s += dist*dist
29.    return sqrt(s)
30.
31> let naive_dist = Mojo_naive_dist(a, b)
32. let fn_dist = Mojo_fn_dist(a, b)
33. print(fn_dist)
34. 
1290.8521425092235
35. print(naive_dist)
36. 
1290.8521425092235

此外,Mojo 還允許開發(fā)者構(gòu)建靜態(tài)編譯的可執(zhí)行文件,從而在無需任何依賴項的前提下進行部署。例如,開發(fā)者可以編譯并運行示例庫當中的 hello. 程序,如下所示:

$ Mojo build hello.
$ ./hello
Hello Mojo !
9
6
3
$ ls -lGtranh hello*
-rw-r--r-- 1 0   817 Sep  3 23:59 hello.
-rwxr-xr-x 1 0   22K Sep  3 23:59 hello

這個靜態(tài)編譯的 22 kB 二進制文件非???,它的實現(xiàn)離不開 Mojo 緊湊的依賴項管理機制。

Visual Studio Code 擴展

VS Code 是目前全球最流行的 IDE 之一。Mojo 已經(jīng)在 Visual Studio Marketplace 上發(fā)布了官方擴展,能夠直接提供支持。如此一來,各位開發(fā)者就能輕松在生產(chǎn)流程中獲取 Mojo 支持語法高亮顯示、診斷和修復(fù)、定義和引用、懸停幫助、格式化、代碼補全。

Jupyter 集成

Jupyter 為交互式開發(fā)提供了一套強大的環(huán)境。Mojo 包含一個 Jupyter 內(nèi)核,允許開發(fā)者直接在其中使用 Jupyter notebook。團隊在 GitHub 上共享了 Mojo Playground 中的所有 notebook(https://github.com/modularml/mojo/tree/main/examples/notebooks),關(guān)于更多細節(jié)信息請參閱 README 自述文件。

調(diào)試支持(即將推出)

在即將發(fā)布的新版本中,團隊將在 VS Code 中添加通過 LLDB 命令行界面實現(xiàn)的交互式調(diào)試體驗。不僅如此,Mojo 的調(diào)試程序能夠在同一調(diào)試會話中無縫對 Mojo/C/C++ 混合代碼進行操作,進一步增強開發(fā)者在處理高度專業(yè)化代碼時的能力。


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

    關(guān)注

    10

    文章

    1965

    瀏覽量

    39604
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4877

    瀏覽量

    90099
  • 生態(tài)系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    711

    瀏覽量

    21586

原文標題:比Python快68000倍!Mojo正式發(fā)布,網(wǎng)友:Python生態(tài)系統(tǒng)最重要的升級來了

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    基于摩托羅拉68000系列處理器的單板計算機開源項目介紹

    今天給大家?guī)硪豢畛岬拈_源復(fù)古計算項目—— 基于摩托羅拉 68000 系列處理器的單板計算機(SBC)!從 MC68008 到 MC68040,多代機型持續(xù)迭代,每款都能運行 Linux
    的頭像 發(fā)表于 03-06 11:43 ?406次閱讀
    基于摩托羅拉<b class='flag-5'>68000</b>系列處理器的單板計算機開源項目介紹

    樣板!揭秘嘉立創(chuàng)64層 PCB板 與HDI工藝

    、成本低50%”的顯著優(yōu)勢,成為高端板領(lǐng)域的代表企業(yè)。 一、64層超高層PCB制造服務(wù) 嘉立創(chuàng)超高層PCB服務(wù)打破了行業(yè)壟斷,可以滿足復(fù)雜電路集成化設(shè)計,提供更大的布線層次和空間。 在交付周期方面,嘉立創(chuàng)樣板交期僅為10-15天,傳統(tǒng)同行交期1
    的頭像 發(fā)表于 02-03 14:38 ?279次閱讀

    固件燒錄速度實測:JTAGUART6.8

    在批量生產(chǎn)場景中,固件燒錄效率直接影響產(chǎn)線節(jié)拍與交付能力。如何選擇最優(yōu)燒錄方式?本文以ZLG致遠電子MR6450系列核心板為例,通過實測數(shù)據(jù)為您解析。MR6450核心板MR6450是ZLG致遠電子推出的工業(yè)級LGA封裝核心板,搭載先楫半導(dǎo)體HPM6450/HPM6750芯片,集成4路CANFD、雙千兆以太網(wǎng)及15路串口等工業(yè)通信接口,適用于PLC、運動控制、
    的頭像 發(fā)表于 01-27 11:34 ?293次閱讀
    固件燒錄速度實測:JTAG<b class='flag-5'>比</b>UART<b class='flag-5'>快</b>6.8<b class='flag-5'>倍</b>

    LPDDR5X在AI數(shù)據(jù)中心多能打?10.7Gbps速率、互連7、推理吞吐高5、延遲低80%!

    廠商們包括三星、美光、SK海力士以及長鑫存儲等也不斷拉高LPDDR5X的規(guī)格,有望拓展繼智能終端之后AI數(shù)據(jù)中心這類新應(yīng)用。 ? 三星電子 ? 三星發(fā)布前代1.25、功耗效率提
    的頭像 發(fā)表于 01-27 09:35 ?5255次閱讀
    LPDDR5X在AI數(shù)據(jù)中心多能打?10.7Gbps速率、互連<b class='flag-5'>快</b>7<b class='flag-5'>倍</b>、推理吞吐高5<b class='flag-5'>倍</b>、延遲低80%!

    沒有專利的opencv-python 版本

    所有 官方發(fā)布的 opencv-python 核心版本(無 contrib 擴展)都無專利風(fēng)險——專利問題僅存在于 opencv-contrib-python 擴展模塊中的少數(shù)算法(如早期 SIFT
    發(fā)表于 12-13 12:37

    AI算法開發(fā),SpeedDP打輔助!不止10效率

    。而那些能夠帶來10工作效率的AI自然能夠輕松取代人類。當然這也是相對的,不是每個領(lǐng)域都適用,廚師再快,也無法讓實物10熟;醫(yī)生再優(yōu)秀,也不可能讓病人10
    的頭像 發(fā)表于 11-20 18:09 ?647次閱讀
    AI算法開發(fā),SpeedDP打輔助!不止10<b class='flag-5'>倍</b>效率

    一文了解Mojo編程語言

    和 MLIR(多級中間表示)技術(shù),Mojo 的性能接近 C++,甚至在某些任務(wù)中比 Python 數(shù)萬。 支持直接操作硬件資源,如內(nèi)存管理和 SIMD(單指令多數(shù)據(jù))指令,適合高性
    發(fā)表于 11-07 05:59

    谷歌芯片實現(xiàn)量子計算新突破,超算13000

    在特定任務(wù)上的運行速度傳統(tǒng)超級計算機13000,并且這種算法可以在類似平臺上得到重現(xiàn)。 ? 量子比特極易受到環(huán)境干擾,導(dǎo)致計算錯誤,這成為量子計算走向?qū)嵱玫囊淮笞璧K。而谷歌的Willow芯片成功實現(xiàn)了低于表面碼閾值的量子糾
    的頭像 發(fā)表于 10-27 06:51 ?9700次閱讀

    今日看點:谷歌芯片實現(xiàn)量子計算經(jīng)典超算13000;NFC 技術(shù)突破:讀取距離從 5 毫米提升至 20 毫米

    谷歌芯片實現(xiàn)量子計算經(jīng)典超算13000 近日,谷歌在《自然》雜志披露與Willow芯片相關(guān)的量子計算突破性研究成果。該公司稱這是歷史上首次證明量子計算機可以在硬件上成功運行一項可驗證算法,其
    發(fā)表于 10-23 10:20 ?1563次閱讀

    Pico Technology發(fā)布Python軟件包pyPicoSDK

    近日,全球領(lǐng)先的基于 PC 的儀器供應(yīng)商Pico Technology 官方發(fā)布了 pyPicoSDK,這是一款旨在簡化 PicoScopes 應(yīng)用的 Python 軟件包。pyPicoSDK 在
    的頭像 發(fā)表于 09-29 15:03 ?959次閱讀

    DDR5速率以上!DDR6已進入平臺驗證

    計劃提升至17600MT/s,達到現(xiàn)行DDR5最高速度(約8000MT/s)的兩以上。 ? 2024 年,JEDEC 開始著手研究下一代內(nèi)存標準 DDR6,目標是為存儲器領(lǐng)域帶來更快的讀寫速度和更高
    的頭像 發(fā)表于 07-31 08:32 ?4024次閱讀

    業(yè)界首個華為發(fā)布全液冷兆瓦級超充 補能效率較傳統(tǒng)充樁提升近4

    在2025華為智能電動&智能充電網(wǎng)絡(luò)戰(zhàn)略與新品發(fā)布會上,華為正式發(fā)布了業(yè)界首個全液冷兆瓦級超充解決方案。不僅僅是充電,壽命還長,使用壽命長達 10 年。 據(jù)悉,華為全液冷兆瓦級超充搭載的是華為自主
    的頭像 發(fā)表于 04-23 16:26 ?1612次閱讀

    新品發(fā)布!國民技術(shù)推出高性能多協(xié)議充協(xié)議SoC芯片

    近日,國民技術(shù)電源管理產(chǎn)品再添新成員,正式發(fā)布高性能多協(xié)議充協(xié)議SoC芯片(NP11/NP12/NP21系列),采用Arm內(nèi)核,基于Flash工藝設(shè)計,產(chǎn)品可支持PD/QC/UFCS/APPPLE
    的頭像 發(fā)表于 04-18 21:06 ?1700次閱讀
    新品<b class='flag-5'>發(fā)布</b>!國民技術(shù)推出高性能多協(xié)議<b class='flag-5'>快</b>充協(xié)議SoC芯片

    零基礎(chǔ)入門:如何在樹莓派上編寫和運行Python程序?

    是一種非常有用的編程語言,其語法易于閱讀,允許程序員使用匯編、C或Java等語言更少的代碼行。Python編程語言最初實際上是作為Linux的腳本語言而開發(fā)的。Py
    的頭像 發(fā)表于 03-25 09:27 ?2066次閱讀
    零基礎(chǔ)入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b>程序?