サブロウ丸

Sabrou-mal サブロウ丸

主にプログラミングと数学

2025-01-01から1年間の記事一覧

PyTorchでプロファイルを取得する。torch.profiler.profile

torch.profiler.profileの機能を使ってプロファイルを取ることができる。プロファイルとは要するにどの関数や処理でどれほどの時間を要しているのかを計測すること。 計測 # profiler setting if config.profile: prof = torch.profiler.profile( activities…

PytorchのDeviceMesh

DeviceMeshはGPUなどのリソースグループを管理するツールで、これを使えば分散学習に割り当てるGPUリソースを柔軟に割り当てられる。 分散並列手法にはいくつかの種類があり、大まかにデータ並列とモデル並列の二つがある。LLMのようなパラメータ数が多いモ…

NVIDIA SHARP; Error event recieved: event: RDMA_CM_EVENT_ROUTE_ERROR, error: -22; Local Port validation failed. error

NVIDIA SHARPを利用してreduce-scatterを実行しようとすると次のエラー。 [snail03:1:40413 unique id 139630260094914][2025-04-22 13:45:47] DEBUG collect_ports_data: found valid device (device mlx5_2 port 1) in at index 0 [snail02][Apr 22 13:45:…

マルチサーバ、マルチコンテナ(Docker)環境でのMPIプログラム実行

本稿ではホストネットワークを用いてマルチサーバーでマルチコンテナ環境でのMPI プログラムを実行する環境の作成を行います。 Docker Swarm ネットワークを用いた環境構築はこちら↓ コンテナの作成 準備 Dockerfile コンテナの起動 SSH 鍵の共有 実行 コン…

Pytorchにおける分散処理に関する情報のまとめ

Writing Distributed Applications with PyTorch — PyTorch Tutorials 2.6.0+cu124 documentation UCC-backend(ProcessGroupUCC)について ProcessGroupへの追加。Feb, 2022 [RFC] UCC integration in ProcessGroupNCCL · Issue #70654 · pytorch/pytorch ·…

Reduce_scatter と Reduce_scatter_block

OpenMPIにはReduce_scatterとReduce_scatter_blockの2種類の集団通信が定義されています。 Reduce_scatter MPI_Reduce_scatter(3) man page (version 4.1.8) それぞれのプロセスが持つデータを集約し、その結果を直和に配布します。 int MPI_Ireduce_scatter…

CUDA-aware OpenMPIのビルド

OpenMPIはCUDA-awareをサポートしている。 すなわち、集団通信実行の際に、(ホストメモリでなく)CUDA上のメモリポインタを渡してもそのまま動作するというもの。 https://www.open-mpi.org/faq/?category=runcuda#mpi-cuda-aware-support のコードを実行す…

NVIDIA GPU の Compute Capability 一覧

Compute Capability (CC) アーキテクチャ 代表的な GPU 主な特徴 compute_52 / sm_52 Maxwell GTX 970, GTX 980, GTX 980 Ti FP16 サポートなし compute_60 / sm_60 Pascal Tesla P100, GTX 1080 初の Pascal 世代、FP16 サポート compute_61 / sm_61 Pascal…

HCOLL

HCOLLはNVIDIA HPC-X Software Toolkitに内包されている、MPIの集団通信のためのコレクション。 ソースは公開されていない。 OpenMPIとの関係 OpenMPIからHCOLLで実装されている集団通信を呼び出すことができる。 OpenMPIとの関係性は図のようになっており、…

InfiniBand まとめ

都度更新 参考 とりあえず、まずこれを読む。 勉強 「InfiniBand vs. イーサネット: 両者は何か?」を読む - Sabrou-mal サブロウ丸 Verbsサンプルコード InfiniBand -- RC(Reliable Connection)でのpingpongサンプルコード - Sabrou-mal サブロウ丸

「InfiniBand vs. イーサネット: 両者は何か?」を読む

元記事: 知らない or 理解していないところを補填しながら読んでいきます。 10Gを超える高速ネットワークトラフィックの場合、すべてのパケットをアンパックすると、多くのリソースを消費することになります。第一世代のSDR InfiniBandは10Gbpsのレートで動…

InfiniBand -- RC(Reliable Connection)でのpingpongサンプルコード

コード test_rc.cpp · GitHub 概要 ここでは二つのプロセス (SenderとReceiver) を作成し、InfiniBandを介してデータを送信するコードを紹介します。 InfiniBand VerbsではQueryPair (QP)を使って、データの送受信を行う。このQPの状態をRESET → INIT → RT…