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

閱讀時間約 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 的特性以及對不同資料型態的處理能力不同,透過「多執行緒」的程式開發分別對不同資訊在不同晶片機制的邏輯處理,可以充分地應用到算力的資源;進一步開發即時人工智慧相關的程式及研究。

3會員
12內容數
作者從國內主要的半導體公司退休,重回校園唸書;開始第三人生。分享退休投資規劃、科技產業經驗以及校園學習點滴。
留言0
查看全部
發表第一個留言支持創作者!
甘果的沙龍 的其他內容
本文描敘如何配合 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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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效能的擴充速度正在大幅降低,提出「運算通膨」概念