国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

GPU并行效率問題——通過MPS提升GPU計算收益

這篇具有很好參考價值的文章主要介紹了GPU并行效率問題——通過MPS提升GPU計算收益。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

現(xiàn)象描述

使用V100_32G型號的GPU運行計算程序時,發(fā)現(xiàn)程序每5秒能夠完成一次任務(wù),耗費顯存6G。

鑒于V100 GPU擁有32G的顯存,還有很多空閑,決定同時運行多個計算程序,來提升GPU計算收益。

然而,這一切都是想當(dāng)然的。運行多個計算程序時,每個計算程序的處理耗時大大增加。例如,同時運行4個計算程序,則這些計算程序差不多需要20秒才能完成一次任務(wù),幾乎是單進程運行時的4倍,算上并行的收益,20秒能夠處理4個任務(wù),這和單進程的計算程序的運行效果幾乎沒有區(qū)別,也就是說,多進程并行和單進程運行完全沒有效率的提升。

單進程:

5秒/任務(wù)

4進程:

20秒/任務(wù)

問題原因

一種可能的解釋是,當(dāng)前的計算程序?qū)PU的利用率很高,單進程執(zhí)行時已經(jīng)幾乎占用全部的GPU計算核心,因此,多進程執(zhí)行實際上也只相當(dāng)于單進程執(zhí)行,但事實并非如此。

與單核CPU的調(diào)度方式類似,在單一時間片內(nèi),GPU中只會有一個GPU進程在運行,當(dāng)多個進程同時把CUDA任務(wù)發(fā)射到GPU時,GPU使用時間片輪轉(zhuǎn)調(diào)度的方式,多個GPU進程之間在微觀層面上是交替運行的。這也導(dǎo)致,在某一個時間片內(nèi),如果正在運行的GPU進程沒有很好地利用計算資源,那么空閑的計算資源就是浪費掉的。也就是說,GPU并沒有真正地進行并發(fā)計算。再加上不同進程的上下文切換,也帶來了更多的時間開銷。

MPS簡介

Nvidia針對多進程并發(fā)執(zhí)行的場景推出了多進程服務(wù)解決方案-MPS,該方案可以做到空分復(fù)用。

MPS的運行模式為一個MPS Server和多個MPS Client。MPS Server通過一個CUDA Context管理GPU硬件資源,每個MPS Client對應(yīng)一個GPU進程,多個MPS Client會將它們的任務(wù)通過MPS Server傳入GPU,MPS Server可以把多個進程的上下文進行融合,合并后的進程將多個進程的Kernel交織到一起進行發(fā)射,從而越過了硬件時間分片調(diào)度的限制,使得它們的CUDAkernels實現(xiàn)真正意義上的并行,這可以帶來以下好處:

> 進程之間無需上下文切換,減少了上下文切換的開銷。

> 同一個時間片里,多個進程的kernel一起執(zhí)行,提升了GPU計算資源的利用率。

MPS在單進程對GPU利用率不高的情況下是非常有用的,MPS的缺點則在于故障隔離問題,本文忽略。

MPS的使用

1. 啟動MPS。

a. 設(shè)置GPU計算模式為exclusive mode。

設(shè)置GPU compute mode 為 exclusive mode (非必須,但推薦設(shè)置,設(shè)置后有可能使得原本正常的計算程序運行失敗)

nvidia-smi -i 0 -c EXCLUSIVE_PROCESS

注意:

執(zhí)行該設(shè)置需要root權(quán)限。

除非使用-i參數(shù)指定單個GPU,否則將影響所有GPU。

此操作的效果立即生效,但它不會在主機重新啟動后持續(xù)存在,主機重新啟動后,計算模式將重置為“DEFAULT”。

補充說明:

-c選項設(shè)置目標GPU的計算模式。計算模式標志指示單個或多個計算應(yīng)用程序是否可以在GPU上運行。

0/Default:表示每個設(shè)備允許多個上下文。

1/Exclusive_Thread:已棄用,改用 Exclusive_Process。

2/Prohibited:表示每臺設(shè)備不允許使用任何上下文(無計算應(yīng)用程序)。

3/Exclusive_Process:表示每個設(shè)備只允許一個上下文,一次可從多個線程使用。

b. 啟動MPS守護進程。

服務(wù)器中有多個GPU時,選擇特定的GPU運行程序可在程序運行命令前使用:CUDA_VISIBLE_DEVICES=0命令。0為服務(wù)器中的GPU編號,可以為0, 1, 2, 3等,表明對程序可見的GPU編號。

CUDA_VISIBLE_DEVICES=1

只有編號為1的GPU對程序是可見的,在代碼中g(shù)pu[0]指的就是這塊GPU

CUDA_VISIBLE_DEVICES=0,2,3

只有編號為0,2,3的GPU對程序是可見的,在代碼中g(shù)pu[0]指的是第0塊,gpu[1]指的是第2塊,gpu[2]指的是第3塊

CUDA_VISIBLE_DEVICES=2,0,3

只有編號為0,2,3的GPU對程序是可見的,但是在代碼中g(shù)pu[0]指的是第2塊,gpu[1]指的是第0塊,gpu[2]指的是第3塊

首先設(shè)置CUDA變量:

export CUDA_VISIBLE_DEVICES=0

export CUDA_MPS_PIPE_DIRECTORY=/tmp/nvidia-mps

(cuda 7.0以后非必須)

export CUDA_MPS_LOG_DIRECTORY=/tmp/nvidia-log

(cuda 7.0以后非必須)

啟動mps:

nvidia-cuda-mps-control -d

查看MPS 守護進程是否正在運行:

ps -ef | grep mps

此時可以看到一個mps進程:

root 1826 1 0 Nov27 ? 00:00:04 nvidia-cuda-mps-control -d

接著運行計算程序,并再次查看mps進程,此時可以看到多出了一個mps-server進程:

root 1826 1 0 Nov27 ? 00:00:04 nvidia-cuda-mps-control -d

root 2544 1826 0 Nov27 ? 00:00:43 nvidia-cuda-mps-server

2. 關(guān)閉MPS。

關(guān)閉mps-control:

echo quit | nvidia-cuda-mps-control

讓GPU計算模式恢復(fù)為默認模式:

nvidia-smi -i 0 -c DEFAULT

3. Volta MPS資源配置。

nvidia-cuda-mps-control

set_default_active_thread_percentage 10

該命令為每個MPS Client限制10%的threads。不是為每個Client預(yù)留專用資源,而是限制它們可以最多使用多少threads。默認情況下,每個Client可以獲取所有threads(即100%)。

4. MPS與docker。

為了配合MPS的使用,docker在創(chuàng)建容器時需要通過

--ipc=host

參數(shù)啟用內(nèi)存共享:

docker run -itd --gpus all --ipc=host --network host -p 5501:5501 -v /mnt/data/enhancefox:/home/server-v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime --name enhancefox vsr_trt

注意:

在沒有啟動MPS的情況下,這樣創(chuàng)建的容器仍然能夠正常運行(非MPS模式);此時,在啟動mps之后,即使重啟docker中的程序,該程序仍然不會以mps模式運行。要以mps模式運行程序,必須重啟docker:

docker restart enhancefox

5. 如何查看GPU進程是否處于MPS模式?

通過NVIDIA的nvidia-smi命令我們可以知道顯卡上的任務(wù)可以分為圖形圖像任務(wù)和計算任務(wù)兩種,其中圖形圖形任務(wù)類型為Graphic,計算任務(wù)類型(Type)為compute,縮寫分別為G和C,在使用nvidia-smi命令后我們可以通過查看process內(nèi)容知道不同的進程是屬于G類型還是C類型。當(dāng)啟用MPS之后,Type將會對應(yīng)地變?yōu)镸+G或者M+C:

cuda mps,運維,nvidia,gpu,mps,docker,Powered by 金山文檔

文章來源地址http://www.zghlxwxcb.cn/news/detail-559688.html

到了這里,關(guān)于GPU并行效率問題——通過MPS提升GPU計算收益的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《GPU并行計算與CUDA編程》筆記

    《GPU并行計算與CUDA編程》筆記

    方法一:直接做累加(錯誤) 方法二:原子相加(分組bins越少,并行化程度越低,方法二適合用于分組bins很多的時候) 方法三:局部直方圖 第一步:并行計算局部直方圖; 第二步:把所有局部直方圖每個分組bin使用Reduction(歸約)并行累加起來行程一個總的直方圖。

    2024年02月14日
    瀏覽(15)
  • 看板管理解析:如何通過看板提升項目管理效率?

    看板管理解析:如何通過看板提升項目管理效率?

    在目前市面上的項目管理工具中,項目看板功能基本上成為了標配。看板作為敏捷的項目管理工具,可以幫助我們將項目工作可視化展現(xiàn)。 1, 提高團隊信息流動性 :看板工具可以及時的傳遞項目工作中的最新訊息,保證團隊接受信息的一致性,統(tǒng)一團隊想法。 2, 提高信息

    2024年02月05日
    瀏覽(27)
  • 解放計算力:使用并行處理提升python for循環(huán)速度

    解放計算力:使用并行處理提升python for循環(huán)速度

    Python 是一門功能強大的編程語言,但在處理大規(guī)模數(shù)據(jù)或復(fù)雜計算任務(wù)時,性能可能成為一個瓶頸。幸運的是,Python 提供了多種方法來提升性能,其中之一是利用并行處理來加速循環(huán)操作。本文將介紹如何使用并行處理技術(shù)來優(yōu)化 for 循環(huán),從而提高 Python 程序的執(zhí)行速度。

    2024年02月10日
    瀏覽(24)
  • 數(shù)據(jù)倉庫建設(shè)實踐——如何通過數(shù)據(jù)倉庫建設(shè)提升效率并確保數(shù)據(jù)質(zhì)量

    作者:禪與計算機程序設(shè)計藝術(shù) 隨著互聯(lián)網(wǎng)經(jīng)濟的快速發(fā)展,全球消費者對汽車的需求越來越旺盛。在全球范圍內(nèi),公共汽車運營商(PSA)正在競爭激烈,包括美國的Tesla、上海的東風(fēng)、中國的福特等。全球公共汽車市場規(guī)模每年呈現(xiàn)爆炸性增長態(tài)勢。其中,美國曾經(jīng)的領(lǐng)先地

    2024年02月11日
    瀏覽(32)
  • 提升您的業(yè)務(wù)效率:如何通過API集成自動化工具

    在當(dāng)今快節(jié)奏的商業(yè)環(huán)境中,企業(yè)正面臨著提高效率和降低成本的雙重壓力。隨著數(shù)字化轉(zhuǎn)型的不斷深入,越來越多的組織開始尋求技術(shù)解決方案來應(yīng)對這些挑戰(zhàn)。API(應(yīng)用程序編程接口)的集成是實現(xiàn)業(yè)務(wù)流程自動化的關(guān)鍵步驟之一,它可以幫助企業(yè)更高效地管理和分析數(shù)

    2024年02月20日
    瀏覽(23)
  • 【MacOS】MacBook使用本機m1芯片GPU訓(xùn)練的方法(mps替代cuda)

    記錄: 對于tensorflow環(huán)境配置,即使替換了M1適配的anaconda,使用蘋果官方適配m1的tensorflow安裝命令,仍舊出現(xiàn)各種問題,可見現(xiàn)在的M1版anaconda還是存在很大問題。所以在屢次不服氣的碰壁下我還是改用了miniforge3…真香! so,建議使用miniforge3管理,miniforge3可以理解成 minicon

    2024年02月05日
    瀏覽(15)
  • 微調(diào) LLaMA 2 模型:通過 QLoRA 充分利用單 GPU 效率 Meta LLaMA 2 微調(diào)過程綜合指南

    科技巨頭 Meta 于 2023 年 7 月 18 日發(fā)布了 LLaMA 2,這是他們最新版本的大型語言模型 (LLM),成為頭條新聞。我相信 Llama2 在進一步推動人工智能技術(shù)方面取得了巨大飛躍,人們將關(guān)注私人領(lǐng)域未來對聊天機器人的微調(diào)將超過一般聊天機器人。1 這些尖端模型從 2023 年 1 月到 2023

    2024年02月10日
    瀏覽(23)
  • 云計算與低代碼開發(fā):提升軟件開發(fā)效率的完美組合

    云計算與低代碼開發(fā):提升軟件開發(fā)效率的完美組合

    云計算和低代碼開發(fā)是當(dāng)前技術(shù)領(lǐng)域的兩大熱門概念,它們對企業(yè)和開發(fā)者來說都具有巨大的吸引力。本文將探討云計算與低代碼開發(fā)的結(jié)合,以及這種組合如何加速創(chuàng)新和提高開發(fā)效率。 隨著技術(shù)的不斷進步,軟件開發(fā)領(lǐng)域也迎來了一系列革命性的變化。其中,云計算和低

    2024年01月19日
    瀏覽(21)
  • Mac Apple Silicon M1/M2 homebrew miniforge conda pytorch yolov5深度學(xué)習(xí)環(huán)境搭建并簡單測試MPS GPU加速

    Mac Apple Silicon M1/M2 homebrew miniforge conda pytorch yolov5深度學(xué)習(xí)環(huán)境搭建并簡單測試MPS GPU加速

    筆者使用的是一臺M2版本的Macbook Air,雖然蘋果作為深度學(xué)習(xí)的訓(xùn)練機不太合適,但是由于macbook作為打字機實在是無可挑剔,所以使用macbook調(diào)試一下pytorch的代碼再放到集群上訓(xùn)練或者直接在mac上調(diào)試運行代碼都是不錯的體驗,本文以在mac上直接調(diào)試yolov5為目標,大概記錄一下

    2024年02月02日
    瀏覽(23)
  • 從這五個方面提升python的執(zhí)行效率,才是軟件開發(fā)層面需要考慮的問題!

    python作為使用最廣泛的編程語言之一,有著無窮無盡的第三方非標準庫的支持。 簡單的語法、優(yōu)雅的代碼塊使其在各個業(yè)務(wù)領(lǐng)域都混的風(fēng)生水起,除了這些優(yōu)點,python有一個經(jīng)常被人詬病的缺點那就是運行速度。 小伙伴通過下面的五個python開發(fā)技巧,來充分提高python代碼塊

    2023年04月14日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包