GPUメモリは共有されない

確認する:

import torch
a=torch.rand(2)
a=a.to("cuda:0")
b=a.to("cuda:1")
print(b)
# tensor([0.0, 0.0], device='cuda:1')
print(a)
# tensor([0.9285, 0.3294], device='cuda:0')

上記の状況が発生した場合、2 つのグラフィックス カード間でメモリが共有されていないことを意味し、大規模なモデルを実行すると計算エラーが発生します。

解決:

1. IOMMUを無効にする

Linux システムで IOMMU (入出力メモリ管理ユニット) を無効にするには、システムの起動時にカーネル パラメータを変更する必要があります。IOMMU は仮想化とハードウェア デバイスの管理に使用されるため、これを無効にするとシステムの一部の機能に影響を与える可能性があるため、慎重に作業を進め、操作による影響を確実に理解してください。
Linux で IOMMU を無効にする手順は次のとおりです。

1. ブート構成ファイル (GRUB またはその他のブート ローダー) を編集します。
ターミナルを開き、スーパーユーザー (root) または sudo 権限を持つユーザーとしてログインします。
ブートローダー構成ファイルを見つけます。ほとんどの Linux システムでは、これは GRUB ブート ローダーです。
GRUB 設定ファイルは編集できます。通常は /etc/default/grub にあります。たとえば、テキスト エディタを使用して開きます。

vim /etc/default/grub

GRUB 設定ファイルで、カーネル パラメータが含まれる GRUB_CMDLINE_LINUX または同様の行を見つけます。ハードウェア ベンダーに応じて、intel_iommu=off または amd_iommu=off を追加します。したがって、行は次のようになります。

GRUB_CMDLINE_LINUX="intel_iommu=off"
GRUB_CMDLINE_LINUX="amd_iommu=off"
GRUB_CMDLINE_LINUX="iommu=pt"

2. ブート構成を更新します。

sudo update-grub

3. システムを再起動します。

sudo reboot

2.ドライバーを更新する

ここに画像の説明を挿入します
最新バージョンのドライバーではこの問題が修正されていることがわかります。
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_46398647/article/details/133309013