nccl-test多機多卡測試

ssh免密登錄

ubuntu默認安裝有SSH client,還需要安裝 SSH server

sudo apt install openssh-server
  1. 本機生成公私鑰
cd ~/.ssh
ssh-keygen -t rsa

在.ssh/目錄下,會生成兩個文件:id_rsa和id_rsa.pub

注意:正確配置.ssh目錄以及其下文件權限

sudo chmod 700 .ssh/
sudo chmod 600 .ssh/authorized_keys
  1. 上傳公鑰到目標機器
ssh-copy-id star@192.168.0.100

注意:@前是用戶名,后是ip

  1. 測試免密登錄
ssh star@192.168.0.100

幾臺機器都需要設置,一定要確保可以互相免密登錄!

安裝 NCCL(Ubuntu)

在 Ubuntu 上安裝 NCCL 需要先將包含 NCCL 軟件包的倉庫添加到 APT 系統中,然后通過 APT 安裝 NCCL 軟件包。有兩個可用的倉庫:本地倉庫和網絡倉庫。建議選擇后者以便在發布新版本時輕松獲取升級。

  1. 安裝倉庫。
  • 對于本地 NCCL 倉庫:
sudo dpkg -i nccl-repo-<version>.deb

注意:本地倉庫安裝將提示您安裝它嵌入的本地密鑰,并用該密鑰簽署軟件包。請確保按照說明安裝本地密鑰,否則安裝階段將失敗。

  • 對于網絡倉庫
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<architecture>/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
  1. 更新 APT 數據庫
sudo apt update
  1. 使用 APT 安裝 libnccl2 軟件包。此外,如果您需要編譯帶有 NCCL 的應用程序,可以安裝 libnccl-dev 軟件包:

如果您使用網絡倉庫,以下命令將升級 CUDA 到最新版本:

sudo apt install libnccl2 libnccl-dev

如果您希望保留舊版本的 CUDA,請指定特定版本:

sudo apt install libnccl2=2.8.4-1+cuda11.1 libnccl-dev=2.8.4-1+cuda11.1

安裝MPI(Ubuntu)

采用源碼編譯安裝

  1. 下載OpenMPI源碼

前往OpenMPI官方網站下載或者使用wget:

wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.4.tar.gz
  1. 解壓
tar -zxvf openmpi-4.1.4.tar.gz
  1. 編譯和安裝
./configure --prefix=/usr/local/openmpi
sudo make 
sudo make install
  1. 配置環境變量

/etc/profile中添加

export PATH=/usr/local/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH

注意:需要重啟生效

  1. 驗證

運行以下命令來驗證OpenMPI是否正確安裝:

mpicc --version
mpirun --version

如果命令輸出相應的版本信息,說明OpenMPI已經成功安裝并配置好了

NCCL 測試

這些測試檢查 NCCL 操作的性能和正確性。

  1. 構建

要構建這些測試,只需輸入 make

如果 CUDA 沒有安裝在 /usr/local/cuda,可以指定 CUDA_HOME。類似地,如果 NCCL 沒有安裝在 /usr,可以指定 NCCL_HOME

make CUDA_HOME=/path/to/cuda Nncc

NCCL 測試依賴 MPI 來在多個進程(因此多個節點)上工作。如果你想用 MPI 支持來編譯測試,需要設置 MPI=1 并將 MPI_HOME 設置為 MPI 安裝的路徑。

make MPI=1 MPI_HOME=/path/to/mpi CUDA_HOME=/path/to/cuda NCCL_HOME=/path/to/nccl
  1. 使用方法

NCCL 測試可以在多個進程、多個線程和每個線程的多個 CUDA 設備上運行。進程的數量由 MPI 管理,因此不作為參數傳遞給測試。

  1. 示例

在 8 個 GPU 上運行(-g 8),從 8 字節到 128M 字節:

./build/all_reduce_perf -b 8 -e 128M -f 2 -g 8

在 4個進程上(2個節點)使用 MPI 運行,每個進程 1個 GPU,總共 4 個 GPU:

mpirun -np 4 -H 192.168.0.111:2,192.168.0.100:2 ./build/all_reduce_perf -b 8 -e 128M -f 2 -g 1
  • 參數說明

所有測試都支持相同的參數集

  • GPU 數量
    • -t, --nthreads <num threads> 每個進程的線程數。默認:1。
    • -g, --ngpus <GPUs per thread> 每個線程的 GPU 數。默認:1。
  • 掃描的大小
    • -b, --minbytes <min size in bytes> 開始的最小大小。默認:32M。
    • -e, --maxbytes <max size in bytes> 結束的最大大小。默認:32M。
    • 增量可以是固定的也可以是乘數因子。只應使用其中之一。
    • -i, --stepbytes <increment size> 固定增量大小。默認:1M。
    • -f, --stepfactor <increment factor> 增量的乘數因子。默認:禁用。
  • NCCL 操作參數
    • -o, --op <sum/prod/min/max/avg/all> 指定要執行的歸約操作。僅與 Allreduce、Reduce 或 ReduceScatter 之類的歸約操作相關。默認:Sum。
    • -d, --datatype <nccltype/all> 指定要使用的數據類型。默認:Float。
    • -r, --root <root/all> 指定要使用的 root。僅用于有 root 的操作,如廣播或歸約。默認:0。
  • 性能
    • -n, --iters <iteration count> 迭代次數。默認:20。
    • -w, --warmup_iters <warmup iteration count> 熱身迭代次數(不計時)。默認:5。
    • -m, --agg_iters <aggregation count> 每次迭代要聚合的操作次數。默認:1。
    • -a, --average <0/1/2/3> 將性能報告為所有 ranks 的平均值(僅 MPI=1 時)。<0=Rank0,1=Avg,2=Min,3=Max>。默認:1。
  • 測試操作
    • -p, --parallel_init <0/1> 使用線程并行初始化 NCCL。默認:0。
    • -c, --check <check iteration count> 執行計數迭代,檢查每次迭代的結果正確性。這在大量 GPU 上可能會很慢。默認:1。
    • -z, --blocking <0/1> 使 NCCL 集體操作阻塞,即讓 CPU 在每次集體操作后等待并同步。默認:0。
    • -G, --cudagraph <num graph launches> 將迭代捕獲為 CUDA 圖并指定重放次數。默認:0。

多機運行常見問題

問題1:

bash: orted: 未找到命令
--------------------------------------------------------------------------
ORTE was unable to reliably start one or more daemons.
This usually is caused by:* not finding the required libraries and/or binaries onone or more nodes. Please check your PATH and LD_LIBRARY_PATHsettings, or configure OMPI with --enable-orterun-prefix-by-default* lack of authority to execute on one or more specified nodes.Please verify your allocation and authorities.* the inability to write startup files into /tmp (--tmpdir/orte_tmpdir_base).Please check with your sys admin to determine the correct location to use.*  compilation of the orted with dynamic libraries when static are required(e.g., on Cray). Please check your configure cmd line and consider usingone of the contrib/platform definitions for your system type.* an inability to create a connection back to mpirun due to alack of common network interfaces and/or no route found betweenthem. Please check network connectivity (including firewallsand network routing requirements).
--------------------------------------------------------------------------

方法:添加參數 --prefix

mpirun -np 4 -H 192.168.0.111:2,192.168.0.100:2 --prefix /usr/local/openmpi ./build/all_reduce_perf -b 8 -e 128M -f 2 -g 1

問題2:

--------------------------------------------------------------------------
A compressed message was received by the Open MPI run time system
(PMIx) that could not be decompressed.  This means that Open MPI has
compression support enabled on one node and not enabled on another.
This is an unsupported configuration.Compression support is enabled when both of the following conditions
are met:1. The Open MPI run time system (PMIx) is built with compressionsupport.
2. The necessary compression libraries (e.g., libz) can be found atrun time.You should check that both of these conditions are true on both the
node where mpirun is invoked and all the nodes where MPI processes
will be launched.  The node listed below does not have both conditions
met:node without compression support:  wenji-UbuntuNOTE: There may also be other nodes without compression support.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
ORTE was unable to reliably start one or more daemons.
This usually is caused by:* not finding the required libraries and/or binaries onone or more nodes. Please check your PATH and LD_LIBRARY_PATHsettings, or configure OMPI with --enable-orterun-prefix-by-default* lack of authority to execute on one or more specified nodes.Please verify your allocation and authorities.* the inability to write startup files into /tmp (--tmpdir/orte_tmpdir_base).Please check with your sys admin to determine the correct location to use.*  compilation of the orted with dynamic libraries when static are required(e.g., on Cray). Please check your configure cmd line and consider usingone of the contrib/platform definitions for your system type.* an inability to create a connection back to mpirun due to alack of common network interfaces and/or no route found betweenthem. Please check network connectivity (including firewallsand network routing requirements).
--------------------------------------------------------------------------

方法:安裝zlib

sudo apt install zlib1g

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40104.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40104.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40104.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux下Java11無jre文件夾的問題

項目升級需要更高級的Java版本&#xff0c;于是下載了jdk-11.0.22_linux-x64_bin.tar.gz&#xff0c;解壓后jdk-11.0.22下沒有jre&#xff0c;導致eclipse下“build path”無法加載jre。 Java11以上版本不在提供jre&#xff0c;Java11安裝后&#xff0c;需要如下處理&#xff1…

貝葉斯優化算法(Bayesian Optimization)及其Python 和 MATLAB 實現

貝葉斯優化算法&#xff08;Bayesian Optimization&#xff09;是一種基于貝葉斯統計理論的優化方法&#xff0c;通常用于在復雜搜索空間中尋找最優解。該算法能夠有效地在未知黑盒函數上進行優化&#xff0c;并在相對較少的迭代次數內找到較優解&#xff0c;因此在許多領域如超…

ElementUI中的el-table解決寬度問題 - 根據內容自動撐開

在使用element-ui中&#xff0c;會發現表格組件el-table在未指定寬度情況下&#xff0c;會自動計算并給表格寬度賦值。但實際開發中&#xff0c;有時需要根據內容實際長度自動撐開顯示&#xff0c;由內容的多少而決定表格的寬度&#xff0c;而不是默認寬度為100%。在默認情況下…

監控平臺zabbix對接grafana

目錄 1.安裝grafana并啟動 2.瀏覽器訪問 3.導入zabbix數據&#xff0c;對接grafana 4.如何導入模板 5.使用zabbix監控nginx并發量連接數 5.1 修改nginx配置 5.2 編寫監控數據腳本 5.3 設置鍵值 5.4 在zabbix web端完成自定義監控項 5.5 連接到grafana 以上一篇博客&l…

使用CubeIDE調試項目現stm32 no source available for “main() at 0x800337c:

使用CubeIDE調試項目現stm32 no source available for "main() at 0x800337c&#xff1a; 問題描述 使用CubeIDE編譯工程代碼和下載都沒有任何問題&#xff0c;點擊Debug調試工程時&#xff0c;出現stm32 no source available for "main() at 0x800337c 原因分析&a…

聊聊C++20的三向比較運算符 `<=>`

C20標準引入了許多新特性&#xff0c;其中之一是三向比較運算符 <>&#xff0c;也被稱為太空船運算符。這個新運算符為C程序員提供了一種全新的比較對象的方式&#xff0c;它能有效簡化比較邏輯&#xff0c;避免編寫多個比較運算符重載的情況。 為什么需要三向比較運算符…

VirtualBox Ubuntu Sever配置雙網卡

Ubuntu 版本&#xff1a;Ubuntu Server 2404 vitrualBox 網卡配置&#xff1a; 如上配置后&#xff0c;ifconfig 只能看到 網卡1 應用了。要應用 網卡2 需要更改文件 /etc/netplan/50-cloud-init.yaml&#xff08;不同的ubuntu版本這個文件名可能不同&#xff09; 首先 ifcon…

6.BeanFactory處理器Bean處理器

BeanFactoryPostProcessor BeanFactoryProcessor是Bean工廠處理器&#xff0c;對beanFactory的進行擴展&#xff0c;可以解析Configuration Bean注解。 主要功能是對BeanFactory的補充。 //獲取所有bean工廠的處理器<Bean名字&#xff0c;bean工廠處理器>Map<Strin…

Simulink中的S函數深入解析

Simulink中的S函數深入解析 在Simulink環境中&#xff0c;S函數&#xff08;Simulink Functions&#xff09;扮演著至關重要的角色&#xff0c;它們允許用戶將自定義算法和行為集成到Simulink模型中。本文將詳細探討S函數的定義、應用和編寫方法&#xff0c;以及在模型中如何利…

Android設備信息(DevInfo)

軟件介紹 設備信息&#xff08;DevInfo&#xff09;一款評分非常不錯的手機硬件及各種信息檢測應用&#xff0c;安卓設備硬件檢測工具。可以全面查看手機的各種信息、包括&#xff1a;Android系統版本的詳細信息、芯片CPU處理器的詳細信息、全球衛星定位、測試功能、硬件溫度、…

Python爬蟲技術及其原理探秘

導言 隨著互聯網的發展&#xff0c;大量的數據被存儲在網絡上&#xff0c;而我們需要從中獲取有用的信息。Python作為一種功能強大且易于學習的編程語言&#xff0c;被廣泛用于網絡爬蟲的開發。本文將詳細介紹Python爬蟲所需的技術及其原理&#xff0c;并提供相關的代碼案例。…

c++高階-1-模板

文章目錄 模板一、模板基本語法二、函數模板1.基本語法2.函數模板注意事項3.普通函數和函數模板區別4.普通函數和函數模板調用規則 三、類模板1.基本語法2.類模板和函數模板的區別3.類模板中成員函數調用時機4.類模板對象做函數參數5.類模板與繼承6.成員函數的類外實現 模板 一…

Ansys Zemax|場曲跟畸變圖的前世今生

實現 OpticStudio通過在X和Y方向&#xff08;弧矢和子午方向&#xff09;的傍軸光線追蹤確定近軸圖像平面的Z坐標&#xff0c;并測量該近軸焦平面與系統圖像平面的Z坐標之間的距離。 切向數據是沿Z軸從圖像平面到近軸圖像平面在切向&#xff08;YZ&#xff09;平面測量的距離…

Qt Creator配置以及使用Git

Qt Creator配置以及使用Git 引言一、Qt Creator配置git二、Qt Creator使用git2.1 創建git倉庫 or git項目導入Qt2.2 配置遠端&#xff0c;拉代碼 or 上傳代碼2.3 查看更改2.4 更多細節可參考官方文檔 三、參考的博客以及文檔 引言 Qt Creator配置Git之后&#xff0c;可以看作是…

【AIGC】DiffuToon:穩定的視頻卡通化技術方案

論文&#xff1a;https://arxiv.org/pdf/2401.16224 github&#xff1a;https://github.com/modelscope/DiffSynth-Studio/tree/main/examples/Diffutoon 網絡結構 兩個主要分支&#xff1a;主要的卡通化管線和編輯分支 重要技術 使用了fastblend(無需模型的視頻幀之間的平滑…

動態規劃解決0/1背包問題詳解

一、引言 在日常生活中,我們經常面臨各種選擇和決策。有些決策涉及到資源的有限性和選擇的最優性,這就需要我們運用一些算法來幫助我們做出最佳的選擇。0/1背包問題就是這樣一個經典的優化問題,它要求我們在給定的背包容量和物品集合中,選擇出總價值最大的物品組合。本文將…

不同操作系統下的換行符

1. 關鍵字2. 換行符的比較3. ASCII碼4. 修改換行符 4.1. VSCode 5. 參考文檔 1. 關鍵字 CR LF CRLF 換行符 2. 換行符的比較 英文全稱英文縮寫中文含義轉義字符ASCII碼值操作系統Carriage ReturnCR回車\r13MacIntosh&#xff08;早期的Mac&#xff09;LinefeedLF換行/新行\…

C++程序演示如何使用類和對象進行簡單的面向對象編程。

下面是一個簡單的C程序示例&#xff0c;展示了如何使用類和對象進行面向對象編程。這個示例定義了一個名為Person的類&#xff0c;它包含私有成員變量&#xff08;姓名和年齡&#xff09;以及公共成員函數&#xff08;用于設置和獲取這些成員變量的值&#xff09;。然后&#x…

【C語言】指針經典例題

題1&#xff1a; #include <stdio.h>int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } //程序的結果是什么&#xff1f; 解答如下&#xff1a; 題2&#xff1a; #include <std…

提取含日期字符串并格式化輸出

背景 OCR識別的字符串中&#xff0c;日期類型存在字符串中&#xff0c;需要提取出來&#xff0c;并格式化 環境以及依賴package NStudyPy0.0.12 NStudyPy 工具包 , 一個有用的工具包&#xff0c;可以簡化開發流程&#xff0c;詳細介紹可以參考 NStudyPy 本教程使用 python 3.10…