web-dev-qa-db-ja.com

M.2NVMeまたは統合グラフィックスはディスクリートグラフィックスカードを遅くしますか

ディープラーニング用のLinuxマシンを構築しようとしています。関連部品:

  • ASRock Z270 KILLER SLI/AC
  • Core i7 7700
  • 2x GTX 1060
  • 1TB M.2 Evo 850 NVMe SSD

ディープラーニングでは、CUDAベースのアルゴリズムをGPUで何日も実行し、GPU/CPU/SSD間で大量のデータをやり取りします。ボトルネックが増えます。

だから私はPCIeレーンについて心配しています。私が理解しているように、CPUには16しかありません。私が理解していることから、GPUには8xレーンで十分ですが、4xでは速度が低下する可能性があります。 (私は当初、NVMe SSDがレーンを取るのではないかと心配していましたが、CPUには4つの余分なIOレーン)があるようです)

デスクトップUIに統合グラフィックスを使用するか、コンピューティング用に2つのGPUを残すのが最善ですか、それとも統合グラフィックスがボトルネックを作成しますか(つまり、GPUの場合は8x 4x4xレーンと8x8xレーンを強制します) for GPU(つまり、統合を無効にして、デスクトップUIと1つのGPUを共有する必要があるかもしれません)。

私の目標は、GPUから最大のパフォーマンスを引き出すことです。ボトルネックがある場合は、5%を超えるパフォーマンスの違いが発生する可能性があるかどうかを知りたいです。これは、1週間のGPU使用量に8時間を掛けたものです。

2
AwokeKnowing

TLDR:

M.2NVMeまたは統合グラフィックスはディスクリートグラフィックスカードを遅くしますか

この特定のケースでは、おそらくそうではありません。


ディープラーニングでは、CUDAベースのアルゴリズムをGPUで何日も実行し、GPU/CPU/SSD間で大量のデータをやり取りします。ボトルネックが増えます。

私はCUDAの経験がまったくありませんが、記事を読んだことを覚えていることから、GPUで計算を行う際の主な問題は、通常、生の転送速度ではありません。代わりにそれは待ち時間です。

'通常'に注意してください。特定のプログラムでは、状況がまったく異なる可能性があります。

レイテンシーは部分的にPCI-e速度の問題です。 PCI-e v3接続は、PCI-e v2レーンよりも高速で実行できます(8GHzと5GHz)。したがって、v3レーンにGPUを搭載したカードが必要です。

Ark.intel.comを見ると、 Core i7 77 にはCPUから直接来る16個のPCI-eレーンがあることがわかります。 (チップセットからさらに多くのものを得ることができます)。

CPUに直接接続されているPCI-eレーンはPCI-ev3であり、1x16、2x8、1x8 + 2x4のいずれかとして使用できます。 2枚のディスクリートグラフィックスカードでCUDAを実行するには、両方とも8レーンを使用する2つのスロットを使用する必要があると思います。

だから私はPCIeレーンについて心配しています。私が理解しているように、CPUには16しかありません。

正しい。

私が理解していることから、GPUには8xレーンで十分ですが、4xでは速度が低下する可能性があります。

はい、そうです。ほとんどの場合、PCI0-eバス速度はグラフィックカードが必要とする速度を超えています。それは時間とともに変化します。 GPUが高速になります。ハイエンドのものは最大帯域幅をプッシュし始めます。 PCI-eバージョンがアップグレードされます...

通常、トップエンドのグラフィックカードには約8レーンで十分です。 TomsハードウェアはPCI-ev2の時代にテストを行いましたが、PCI-ev3の最新のグラフィックカードを使用した最新のセットアップに有効な結果があると思います。

x16:最大速度。
x8:数%の速度低下(たとえば2-5%)
x4:ほとんどの場合は引き続き正常に機能します。ハイエンドのデュアルGPUカードをx4スロットに入れないで、すべてのゲーム設定を最大にして4kディスプレイを実行してください。

(私は当初、NVMe SSDがレーンを取るのではないかと心配していましたが、CPUには4つの余分なIOレーン)があるようです)

そうではありません。現在のIntelコンシューマーチップは、PCI-eレーンが非常に少ないです。彼らのターゲットオーディエンスのほとんどが必要としているのはそれだけです。それはまともな経済的決定です。

Xeonシリーズには、より多くのPCI-eレーンを備えたCPUが搭載されています。いくつかの新しいAMDチップ(AMDのThreadRipperCPUでは64PCI-eレーン。サーバー製品では2倍)も同様です。

代わりに マザーボード には Z270チップセット があり、追加のPCI-eレーンを提供します。

チップセットは、これらのx1、x2、x4構成をサポートします。

最大x4でも、CPUからの2x8がCUDAの最善の策のようです。

残りのレーンの多くは、SATA、USB、ネットワークなどのマザーボードによって使用されます。そのうちの4つは、4つのPCIe 3.0x1拡張スロットを介してエンドユーザーが利用できます。これらにグラフィックカードを入れないでください!

NVMEの場合:ボードには2つのPCIe Gen3 x4 UltraM.2スロットがあります。このボードのhttp://asrock.nl/downloadsite/Manual/Z270%20Killer%20SLIac.pdf ">マニュアルには次のように記載されています。

* If M2_1 is occupied by a SATA-type M.2 device, SATA_5 will be disabled.  
* If M2_2 is occupied by a SATA-type M.2 device, SATA_0 will be disabled.

私は通常の「M.2がNVMEデバイスで使用されている場合は...」のいずれもスピオットしませんでした。これはおそらくチップセットからの専用レーンがあることを意味します。

2つのGPUをコンピューティング用に残しますか、それとも統合グラフィックスによってGPUのボトルネックが発生しますか(つまり、GPUの場合は8x 4x 4x、8x 8xレーンを強制します)(つまり、統合を無効にして、デスクトップUIと1つのGPUを共有する必要があります)。

統合されたグラフィックがあなたをボトルネックにする理由はわかりません。無効にしても問題はないと思います。マシンに計算を実行させるだけでも、グラフィックなしで実行できます(SSHで接続するだけです)。

計算専用の2枚のグラフィックカードと残りの統合グラフィック(たとえば、単純な端末画面)を持っていることは、私には最もきれいに思えます。しかし、それは定量化できるものではありません。

私の目標は、GPUから最大のパフォーマンスを引き出すことです。ボトルネックがある場合は、5%を超えるパフォーマンスの違いが発生する可能性があるかどうかを知りたいです。これは、1週間のGPU使用量に8時間を掛けたものです。

これに関する最善のアドバイスは、システムが何をしているかを測定することです。可能であれば、テストモードで1週間過ごしました。 x8の両方のカードで実行します。測定します。ソフトウェアを使用して、PCI-eレーンをx4にダウングレードします。パフォーマンスがどれだけ失われるかを確認します。それが1%未満の場合は、x16に1枚、x1スロットに1枚のカードを試してみてください。 2 * x8の方がはるかに優れていると思いますが、間違っている可能性があります。

他の設定でも同様のことを行います。例えば。ハイパースレッディングなしで実行してみてください。 (HTオンは一般に30%ほど高速ですが、実際には速度が低下する場合があるため、テストしてください。)省電力を無効にしてみてください。などなど。

次に、いくつかの異なるテストを使用した数日間のテストの後、本番環境に移行します。

1
Hennes