利用 iMac Mini M4 晶片撰寫 GPU 程式

甘果-avatar-img
發佈於程式
更新 發佈閱讀 6 分鐘

蘋果的 M 系列晶片採用所謂的「統一記憶體架構 (Unified Memory Architecture, UMA)」,與一般我們在NVIDIA CUDA 常搭配使用的獨立顯示卡記憶體架構之間有所不同。主要的差異在於記憶體的物理位置 以及 CPU 與 GPU 如何存取這些記憶體。蘋果是將 CPU、GPU、神經網路引擎 (Neural Engine) 等處理單元都整合在同一個 SoC (System on a Chip) 晶片上。它們共享同一塊物理記憶體池。記憶體存取: CPU 和 GPU 可以直接存取相同的物理記憶體位址,不需要將資料從一個記憶體區域複製到另一個區域;這樣的作法在單晶片中 CPU 以及 GPU 的資料傳輸簡單而且快速;方便在小規模的人工智慧程式開發上意外地有效。在程式上,也可以透過 pyTorch 來撰寫蘋果的 GPU 程式。

  • 建立測試執行緒

首先先定義兩個執行緒,分別各自在 CPU 以及 CPU 上來執行。

import torch
import numpy as np
import time
import threading
import warnings

#-----------------------
# 定義在 CPU 執行的執行緒
class cpuThread(threading.Thread):
def __init__(self, x,y,count):
threading.Thread.__init__(self)
self.x=x
self.y=y
self.ans=x
self.count=count
def run(self):
for i in range(self.count):
self.ans=np.matmul(self.x,self.y)
# 定義在 GPU 執行的執行緒
class gpuThread(threading.Thread):
def __init__(self, x,y,count):
threading.Thread.__init__(self)
self.x=x
self.y=y
self.count=count
self.ans=x
def run(self):
for i in range(self.count):
self.ans=torch.matmul(self.x,self.y)
#-----------------------
  • 指定執行的 CPU 及 GPU

接下來,先建立要用來測試的資料,分別放在 CPU 以及透過 PyTorch 的「device('mps')」指令,指定到 GPU。


device = torch.device('mps')
print('GPU count:',torch.mps.device_count())

# 創建執行緒物件
# 起始在 CPUGPU 的亂數矩陣
np.random.seed(13)
matrixA=np.random.rand(10000,10000).astype('float32')
matrixB=np.random.rand(10000,10000).astype('float32')
tensorA=torch.tensor(matrixA).to(device)
tensorB=torch.tensor(matrixB).to(device)
#-----------------------
  • 進行測試

然後,我們就可以來測試看看,在蘋果的 iMac Mini M4 晶片上,透過「pyTorch」執行 CPU 及以 GPU 的效果。


#-----------------------
# 單獨 CPU 計算時間
beginTime=time.time()
runCPU=cpuThread(matrixA,matrixB,10)
runCPU.start()
runCPU.join()
print('CPU execution time:',time.time()-beginTime)
#-----------------------
# 單獨 GPU 計算時間
beginTime=time.time()
runGPU=gpuThread(tensorA,tensorB,10)
runGPU.start()
runGPU.join()
torch.mps.synchronize() # 等所有 GPU 都計算完畢
print('GPU execution time:',time.time()-beginTime)
iMac mini M4 的執行結果

iMac mini M4 的執行結果


執行的結果,單純的矩陣相乘運算;GPU 大概可以比 CPU 快了四倍;當然,這中間還有「pyTorch」程式庫可以再優化的空間。不過相較於價格相近同樣是單晶片架構的 nVidia Jetson Orin 來說,這樣的速度真的已經非常驚人了,大約相差了五倍;在教學和工程研究上,真的是太值得了。

nVidia Jetson Orin 的執行結果

nVidia Jetson Orin 的執行結果



留言
avatar-img
甘果的沙龍
5會員
33內容數
作者從國內主要的半導體公司退休,重回校園唸書;開始第三人生。分享退休投資規劃、科技產業經驗以及校園學習點滴。
甘果的沙龍的其他內容
2025/04/26
本文章說明如何在已安裝 Python 3.9 的 iMac mini 上設定 Python 虛擬環境,以及如何使用 venv 工具、安裝常用函式庫(如 numpy、pyTorch 等),並設定 Jupyter 連動不同 Python 虛擬環境。
Thumbnail
2025/04/26
本文章說明如何在已安裝 Python 3.9 的 iMac mini 上設定 Python 虛擬環境,以及如何使用 venv 工具、安裝常用函式庫(如 numpy、pyTorch 等),並設定 Jupyter 連動不同 Python 虛擬環境。
Thumbnail
2025/04/19
這篇文章說明如何在iMac mini M4上設定Jupyter Notebook作為遠端程式設計伺服器,方便使用iPad進行程式開發。文章涵蓋Jupyter Notebook的安裝、設定遠端連線以及建立可執行的shell script,讓伺服器能持續運作。
Thumbnail
2025/04/19
這篇文章說明如何在iMac mini M4上設定Jupyter Notebook作為遠端程式設計伺服器,方便使用iPad進行程式開發。文章涵蓋Jupyter Notebook的安裝、設定遠端連線以及建立可執行的shell script,讓伺服器能持續運作。
Thumbnail
2025/04/10
本文介紹如何將蘋果iMac mini作為CP值最高的人工智慧程式設計伺服器,搭配 iPad 進行遠端程式設計工作。文章說明瞭啟動遠端服務、連接SSH伺服器、使用外接硬碟及連接FTP伺服器等步驟,並推薦了相關應用 app。
Thumbnail
2025/04/10
本文介紹如何將蘋果iMac mini作為CP值最高的人工智慧程式設計伺服器,搭配 iPad 進行遠端程式設計工作。文章說明瞭啟動遠端服務、連接SSH伺服器、使用外接硬碟及連接FTP伺服器等步驟,並推薦了相關應用 app。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
蘋果M系列晶片採用統一記憶體架構 (UMA),不同於NVIDIA CUDA常用的獨立顯示卡記憶體架構。本文以PyTorch 撰寫測試M4晶片CPU和GPU矩陣運算效能程式,結果顯示不管GPU或是CPU的結果,運算效能驚人,非常適合教學及小型研究用途。
Thumbnail
蘋果M系列晶片採用統一記憶體架構 (UMA),不同於NVIDIA CUDA常用的獨立顯示卡記憶體架構。本文以PyTorch 撰寫測試M4晶片CPU和GPU矩陣運算效能程式,結果顯示不管GPU或是CPU的結果,運算效能驚人,非常適合教學及小型研究用途。
Thumbnail
本文章介紹了CPU架構的三大類型:ARM、x86和RISC-V。著重介紹了它們的特點和市場應用情況,並提到了Nvidia採用RISC-V架構的發展經過,以及ISA的定義和重要性。
Thumbnail
本文章介紹了CPU架構的三大類型:ARM、x86和RISC-V。著重介紹了它們的特點和市場應用情況,並提到了Nvidia採用RISC-V架構的發展經過,以及ISA的定義和重要性。
Thumbnail
NVIDIA(英偉達)作為全球領先的圖形處理器(GPU)製造商,不僅在遊戲市場佔有重要地位,還在專業圖形和高性能計算領域擁有強大的產品線。
Thumbnail
NVIDIA(英偉達)作為全球領先的圖形處理器(GPU)製造商,不僅在遊戲市場佔有重要地位,還在專業圖形和高性能計算領域擁有強大的產品線。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
AI PC 硬體 + AI OS + AI PC 摘要
Thumbnail
AI PC 硬體 + AI OS + AI PC 摘要
Thumbnail
NVIDIA在人工智慧處理專用GPU領域的地位牢固,但面臨著來自英特爾和超微半導體等競爭對手的反擊。新興企業也加入競爭,使得競爭更加激烈。未來,合作關係將變得至關重要,NVIDIA和其他競爭對手在激烈的競爭中脫穎而出的關鍵。
Thumbnail
NVIDIA在人工智慧處理專用GPU領域的地位牢固,但面臨著來自英特爾和超微半導體等競爭對手的反擊。新興企業也加入競爭,使得競爭更加激烈。未來,合作關係將變得至關重要,NVIDIA和其他競爭對手在激烈的競爭中脫穎而出的關鍵。
Thumbnail
瞭解IC和IP的區別、晶圓代工的角色,以及芯粒和小晶片對半導體製造的影響。此外,探討了人工智慧對電子設計的影響。
Thumbnail
瞭解IC和IP的區別、晶圓代工的角色,以及芯粒和小晶片對半導體製造的影響。此外,探討了人工智慧對電子設計的影響。
Thumbnail
筆記-2024.03.16-曲博 財訊訪談-談ARM *處理器的兩種架構: 精簡指令集RISC 複雜指令集CISC, *CPU為複雜指令集,運算能力較強,缺點是較耗電。 *ARM,為精簡指令集,運算效能較差,但較省電,屬於微處理器(MPU)。 *英特爾稱霸電腦用CPU, 然而手機較看重
Thumbnail
筆記-2024.03.16-曲博 財訊訪談-談ARM *處理器的兩種架構: 精簡指令集RISC 複雜指令集CISC, *CPU為複雜指令集,運算能力較強,缺點是較耗電。 *ARM,為精簡指令集,運算效能較差,但較省電,屬於微處理器(MPU)。 *英特爾稱霸電腦用CPU, 然而手機較看重
Thumbnail
買電腦時常常聽到CUP幾核心、速度XXX、記憶體8G、16G又是什麼? 這些到底代表什麼呢? 數字越高越好嗎?
Thumbnail
買電腦時常常聽到CUP幾核心、速度XXX、記憶體8G、16G又是什麼? 這些到底代表什麼呢? 數字越高越好嗎?
Thumbnail
蘋果自行研發的5奈米製程M1晶片是Intel(英特爾)架構改為ARM(安謀)架構的「飛躍」,突破了英特爾x86架構電腦的長年壟斷,讓高通、聯發科、NVIDIA與三星電子等ARM架構筆電起死回生。而類似蘋果M1晶片的AI(人工智慧)晶片,已成為全球科技大廠的研發的趨勢,AI晶片的爭霸戰正方興未艾。
Thumbnail
蘋果自行研發的5奈米製程M1晶片是Intel(英特爾)架構改為ARM(安謀)架構的「飛躍」,突破了英特爾x86架構電腦的長年壟斷,讓高通、聯發科、NVIDIA與三星電子等ARM架構筆電起死回生。而類似蘋果M1晶片的AI(人工智慧)晶片,已成為全球科技大廠的研發的趨勢,AI晶片的爭霸戰正方興未艾。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News