開發 Python/PyTorch 多執行緒程式在輝達 nVidia CUDA 環境下

更新於 2024/11/09閱讀時間約 7 分鐘

在安裝實體具有多核 GPU 的環境下,可以透過 Python 「多執行緒的」程式,讓 CPU 及 GPU 依照特性,各自同時進行運算。通常會在 CPU 端處理各種資料處理及人機界面的管理,而在 GPU 端則進行大量數值運算的工作;由於這兩方面的工作都需要同時間進行,因此常會利用「多執行緒」(Thread) 的方式來進行。

  • CPU 端多執行緒程式

假定我們同時在 CPU 端及 GPU 端都要進行多次的矩陣相乘的運算,那麼在 CPU 端的執行緒函數可以這樣撰寫。

import threading
import numpy as np
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)

接下來,我們單獨看一下在 CPU 端所花費的執行時間,

import time
np.random.seed(0)
matrixA=np.random.rand(1000,1000).astype('float32')
matrixB=np.random.rand(1000,1000).astype('float32')
beginTime=time.time()
runCPU=cpuThread(matrixA,matrixB,1000)
runCPU.start()
runCPU.join()

# 印出計算所花的時間
print('CPU execution time:',time.time()-beginTime)
  • GPU 端多執行緒程式

另外,在 GPU 端的執行緒則類似於 CPU 的執行緒,主要的差別則是由「numpy」改用「torch」函式庫。

import torch
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)

以及單獨在 GPU 端所花費的時間。

np.random.seed(0)
matrixA=np.random.rand(1000,1000).astype('float32')
matrixB=np.random.rand(1000,1000).astype('float32')
tensorA=torch.tensor(matrixA).to(device)
tensorB=torch.tensor(matrixB).to(device)

beginTime=time.time()
runGPU=gpuThread(tensorA,tensorB,1000)
runGPU.start()
runGPU.join()
# 等所有 GPU 都計算完畢
torch.cuda.synchronize()
# 印出計算所花的時間
print('GPU execution time:',time.time()-beginTime)

在 Jetson Orin Nano 的機器上,GPU 大約是花費 2~3 秒的時間,而 CPU 端相同的計算大約會花費到 15 秒以上的時間。

  • 同時執行 CPU 端及 GPU 端多執行緒

當然,也可以合併以上兩段程式,同時間在 CPU 及 GPU 端來執行,然後透過「jtop」觀查一下在 Jetson Orin Nano 裝置上計算的負荷如何變化。

np.random.seed(0)
matrixA=np.random.rand(1000,1000).astype('float32')
matrixB=np.random.rand(1000,1000).astype('float32')
tensorA=torch.tensor(matrixA).to(device)
tensorB=torch.tensor(matrixB).to(device)

beginTime=time.time()
runCPU=cpuThread(matrixA,matrixB,1000)
runGPU=gpuThread(tensorA,tensorB,1000)
runCPU.start()
runGPU.start()
runCPU.join()
runGPU.join()
# 等所有 GPU 都計算完畢
torch.cuda.synchronize()
# 印出計算所花的時間
print('CPU combined with GPU execution time:',time.time()-beginTime)
raw-image
raw-image
  • 小結語

由於 CPU 及 GPU 的特性以及對不同資料型態的處理能力不同,透過「多執行緒」的程式開發分別對不同資訊在不同晶片機制的邏輯處理,可以充分地應用到算力的資源;進一步開發即時人工智慧相關的程式及研究。

avatar-img
4會員
18內容數
作者從國內主要的半導體公司退休,重回校園唸書;開始第三人生。分享退休投資規劃、科技產業經驗以及校園學習點滴。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
甘果的沙龍 的其他內容
本文描敘如何配合 nVidia Jetson Orin Nano 的多核心 GPU 的裝置,利用 PyTorch 來作 CUDA python 程式開發。
本篇文章介紹如何在 Jetson Nano 環境 Ubuntu 2.0 使用 git 及 github.com 進行版本控管。文章快速說明如何安裝、建立版本控管目錄及使用常用的指令。透過簡單的步驟,讀者將能夠有效地管理其程式碼版本,提升開發效率。
本文介紹如何在Python開發過程中建立虛擬環境以避免程式庫衝突,並使用Jupyter Notebook切換不同的虛擬環境。讓開發者能夠輕鬆地在不同環境中工作,提升開發效率。本文涵蓋從建立虛擬環境到管理Jupyter核心的完整步驟,適合希望優化其Python開發流程的讀者。
本文介紹如何在 nVidia Nano Python/CUDA 伺服器,遠端使用 Jupyter Notebook 編輯和執行程式。包括Jupyter Notebook 的安裝過程及其配置文件的修改,和遠端存取的機制。本文藉由接近大型公司使用的資訊安全環境的架設,期待相關學生縮短進入業界的學習曲線。
本文介紹如何在 nVidia Jetson Orin Nano 裝置上安裝 PyTorch,並運用其 Python 及 CUDA 環境進行機器學習和人工智慧的開發。提供詳細步驟。適合希望在該平臺上開展研究與開發的使用者。
輝達的 Jetson Orin Nano 是一款小型、平價但功能強大的電腦,擁有完整的平行運算與人工智慧能力;對學術或教學用途非常適合。本文將介紹如何安裝 Python 和 CUDA 環境,並探討其在遠端伺服器替代方案的優勢,是學習與研究 AI 和平行運算的理想選擇。
本文描敘如何配合 nVidia Jetson Orin Nano 的多核心 GPU 的裝置,利用 PyTorch 來作 CUDA python 程式開發。
本篇文章介紹如何在 Jetson Nano 環境 Ubuntu 2.0 使用 git 及 github.com 進行版本控管。文章快速說明如何安裝、建立版本控管目錄及使用常用的指令。透過簡單的步驟,讀者將能夠有效地管理其程式碼版本,提升開發效率。
本文介紹如何在Python開發過程中建立虛擬環境以避免程式庫衝突,並使用Jupyter Notebook切換不同的虛擬環境。讓開發者能夠輕鬆地在不同環境中工作,提升開發效率。本文涵蓋從建立虛擬環境到管理Jupyter核心的完整步驟,適合希望優化其Python開發流程的讀者。
本文介紹如何在 nVidia Nano Python/CUDA 伺服器,遠端使用 Jupyter Notebook 編輯和執行程式。包括Jupyter Notebook 的安裝過程及其配置文件的修改,和遠端存取的機制。本文藉由接近大型公司使用的資訊安全環境的架設,期待相關學生縮短進入業界的學習曲線。
本文介紹如何在 nVidia Jetson Orin Nano 裝置上安裝 PyTorch,並運用其 Python 及 CUDA 環境進行機器學習和人工智慧的開發。提供詳細步驟。適合希望在該平臺上開展研究與開發的使用者。
輝達的 Jetson Orin Nano 是一款小型、平價但功能強大的電腦,擁有完整的平行運算與人工智慧能力;對學術或教學用途非常適合。本文將介紹如何安裝 Python 和 CUDA 環境,並探討其在遠端伺服器替代方案的優勢,是學習與研究 AI 和平行運算的理想選擇。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
PyTorch 是一個開源的 Python 機器學習庫,基於 Torch 庫,底層由 C++ 實現,應用於人工智慧領域,如電腦視覺和自然語言處理等。 PyTorch 2.4 引入了多項新功能和改進,包括支援 Python 3.12、AOTInductor 凍結功能、新的高階 Python 自訂運算
這陣子輝達真的太熱門了,有很多人分享GPU硬體相關的技術,也有人分享與老黃一起工作的點點滴滴,總之非常精彩。 而老黃也說過輝達不只有硬體還有軟體,講到軟體大家第一個聯想到的是CUDA,有了CUDA的加持讓NVIDIA的GPU有更好的效能,不過NVIDIA另一個佈局已久的平台比較少人提起-Omniv
Thumbnail
NVIDIA(英偉達)作為全球領先的圖形處理器(GPU)製造商,不僅在遊戲市場佔有重要地位,還在專業圖形和高性能計算領域擁有強大的產品線。
Thumbnail
NVIDIA的新目標:AI晶圓代工 NVIDIA宣布,他們的目標是成為支援企業開發AI應用程式的「AI晶圓代工」。這與接受客戶委託製造半導體的代工廠相似,NVIDIA將提供技術、專業知識和基礎設施,幫助實現AI應用程式。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
NVIDIA、Intel、Tenstorrent和RISC-V在AI半導體領域的競爭和合作。Intel在AI領域推出了一系列產品,Tenstorrent和Rapidus合作開發新技術,而RISC-V開放源碼指令集架構也受到了廣泛關注。這些內容都展示了AI半導體市場的技術革新和競爭激烈的情況。
Thumbnail
這篇文章探討了NVIDIA在推論式AI半導體市場的挑戰,以及介紹了Intel在AI領域的強化舉措。文章中提到了新興企業可能有機會取代現有市場領導者,並討論了RISC-V技術在AI半導體市場的應用和其他相關動向。
Thumbnail
科技巨擘聯手推進生成式AI發展 開創人工智慧新時代 在生成式人工智慧(Generative AI)的浪潮中,雲端運算龍頭AWS和晶片巨擘NVIDIA攜手合作,推出一系列革命性的基礎設施、軟體和服務。
Thumbnail
根據高盛最近的研究報告,未來的個人電腦和移動設備將搭載更多由AI增強後的應用程式,如AI增強、安全性提升和運算能力強化。 消費性電子股票組合<GSXUPCAI>也顯示出潛力,並列出了成分股以及其權重。
Thumbnail
NVIDIA 黃仁勳 - AI人工智慧時代如何帶動全球新產業革命(個人紀錄用) 🇺🇸Omniverse 就是未來集大成,而加速運算、人工智慧就是兩個最重要的技術核心 🇺🇸CPU效能的擴充速度正在大幅降低,提出「運算通膨」概念
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
PyTorch 是一個開源的 Python 機器學習庫,基於 Torch 庫,底層由 C++ 實現,應用於人工智慧領域,如電腦視覺和自然語言處理等。 PyTorch 2.4 引入了多項新功能和改進,包括支援 Python 3.12、AOTInductor 凍結功能、新的高階 Python 自訂運算
這陣子輝達真的太熱門了,有很多人分享GPU硬體相關的技術,也有人分享與老黃一起工作的點點滴滴,總之非常精彩。 而老黃也說過輝達不只有硬體還有軟體,講到軟體大家第一個聯想到的是CUDA,有了CUDA的加持讓NVIDIA的GPU有更好的效能,不過NVIDIA另一個佈局已久的平台比較少人提起-Omniv
Thumbnail
NVIDIA(英偉達)作為全球領先的圖形處理器(GPU)製造商,不僅在遊戲市場佔有重要地位,還在專業圖形和高性能計算領域擁有強大的產品線。
Thumbnail
NVIDIA的新目標:AI晶圓代工 NVIDIA宣布,他們的目標是成為支援企業開發AI應用程式的「AI晶圓代工」。這與接受客戶委託製造半導體的代工廠相似,NVIDIA將提供技術、專業知識和基礎設施,幫助實現AI應用程式。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
NVIDIA、Intel、Tenstorrent和RISC-V在AI半導體領域的競爭和合作。Intel在AI領域推出了一系列產品,Tenstorrent和Rapidus合作開發新技術,而RISC-V開放源碼指令集架構也受到了廣泛關注。這些內容都展示了AI半導體市場的技術革新和競爭激烈的情況。
Thumbnail
這篇文章探討了NVIDIA在推論式AI半導體市場的挑戰,以及介紹了Intel在AI領域的強化舉措。文章中提到了新興企業可能有機會取代現有市場領導者,並討論了RISC-V技術在AI半導體市場的應用和其他相關動向。
Thumbnail
科技巨擘聯手推進生成式AI發展 開創人工智慧新時代 在生成式人工智慧(Generative AI)的浪潮中,雲端運算龍頭AWS和晶片巨擘NVIDIA攜手合作,推出一系列革命性的基礎設施、軟體和服務。
Thumbnail
根據高盛最近的研究報告,未來的個人電腦和移動設備將搭載更多由AI增強後的應用程式,如AI增強、安全性提升和運算能力強化。 消費性電子股票組合<GSXUPCAI>也顯示出潛力,並列出了成分股以及其權重。
Thumbnail
NVIDIA 黃仁勳 - AI人工智慧時代如何帶動全球新產業革命(個人紀錄用) 🇺🇸Omniverse 就是未來集大成,而加速運算、人工智慧就是兩個最重要的技術核心 🇺🇸CPU效能的擴充速度正在大幅降低,提出「運算通膨」概念