利用 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
留言分享你的想法!
avatar-img
甘果的沙龍
4會員
28內容數
作者從國內主要的半導體公司退休,重回校園唸書;開始第三人生。分享退休投資規劃、科技產業經驗以及校園學習點滴。
甘果的沙龍的其他內容
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
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
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