[自作日記3] グラボ2枚挿しの夢

[自作日記3] グラボ2枚挿しの夢

こんにちは!
今日の話題はレーン分割とグラボ2枚挿しについてです。


前回みてきたとおり、インテル Core シリーズCPUでは、CPUから接続されるPCI Express は PCIe gen5 で x 16(16レーン分)使えました。

PCIe gen5 は非常に高速で、そのレーンを16レーン使えるので、実質的にこの PCIe gen5 x 16 がグラフィックボード(GPU)用です。

実はマザーボードによっては、 PCIe gen5 x16 を2分割して使えるものがあります。

さて、ここで、もう1回、 z690 チップセットのブロック図をみてみましょう。


この左上の↓ですが、2つのボックスがあり、それの中間にORとかいてあります。

これは、「以下の2つのパターンのうち、どちらかを選択することができるよ」という意味になります

  1. 1x16 PCIe 5.0 ・・・ PCIe x16 の拡張ボードを1枚接続する
  2. 2x8 PCIe 5.0 ・・・ PCIe x8 の拡張ボードを2枚接続する

つまり、 PCIe 5.0 は全部で 16本用意してあるけど、1つのスロットで 16本全部つかってもいいけど、 2つのスロットで8本ずつつかうのもありというわけです。

これを レーン分割 と呼びます

レーン分割

このようにレーン分割を使うと、各グラボを x8 の PCIe gen5 として動作させることで、2枚のグラボを同時に使えることになります。

これが インテル Core シリーズのCPUでグラボ2枚挿しができる理屈です。

PCI Express gen5 であれば x8 (レーン8本) だとしても 32 gbytes/s の帯域をもつので、それ以上の帯域を要求されない使用用途であれば問題ないでしょう。

レーン分割はマザーボードの対応が必要

とはいえ、すべてのマザーボードがレーン分割に対応しているわけではりません。CPUがレーン分割に対応していても、マザーボードが対応していなければレーン分割機能は使用できません。

それではレーン分割できるマザーボードを実際にみてみましょう。

MSI から発売された MSI MPG Z690 CARBON WIFI はレーン分割に対応したマザーボードです。ゲーミング用のラインナップですが非常に安定した秀作マザーボードです。

以下は、マニュアルに記載 Expansion Slot(拡張スロット) に関する仕様を抜粋したものです。

一見、難しそうですが、
これまでのシリーズを読んでいただいていれば、すんなり読み解けるはずです。

さぁ、読み解いていきましょう。
1行ずつに①~⑥をふってみました。

① は、「3つの PCI Express x16 スロットが装備されています」と読み解けます。
これは、このマザーボードには全部で3つの x16 形状 をした PCI Expressスロットが装備されています。という意味です。形状が x16なだけです。以下を思い出してください、PCI Expressの ”スロット” の形状には x1,x4,x8,x16がありましたね。
それです。 PCI Express の内部接続レーン数ではない点に注意です。

Credit Erwin Mulialim / Wikimedia Commons / CC BY-SA 3.0

次は②をみてみましょう

②は「PCI_E1 と PCI_E2 スロットは CPU とつながっています」と読むことができます。
はい、この意味もわかるとおもいます。そうです、このPCI_E1とPCI_E2 こそがGグラボ2枚挿しをするためのスロットです。
せっかくなので、実際のマザーボードで、 PCI_E1 スロットとPCI_E2スロットをみてみましょう。

上のようにPCI_E1とPCI_E2スロットが配置されていますね。
さらに、どちらも x16 タイプのスロット(横長ですね)であることがわかります。


次は③を読んでみましょう

③はPCI_E1は PCI_E2は「 PCI Express 5.0 をサポートしています。」ということがかいてあります。


④は、「 x16/x0 と x8/x8 をサポートしています」と書いてあります。
さてこれはどういう意味でしょうか。

これは、さきほど説明したレーン分割について説明している内容となります。
つまり、以下のように読み解くことができます

”x16/x0”の意味

これは以下のような意味をもっています

  • PCI_E1スロットを PCI Express gen5 x16 として使用する
  • PCI_E2スロットは 無効(使用できない)とする

どういうことかというと、 PCI_E1スロット のほうにCPUと接続されるレーン16本をすべて使ってしまうということです。そのため、PCI_E2のほうには残りのレーンが無く、レーン0本になり、実質的にPCI_E2スロットのほうに拡張ボードを挿しても使用することができない、ということです。

"X8/X8" の意味

はい、こちらは、もうお分かりの通り、
以下のような意味をもっています

  • PCI_E1スロットを PCI Express gen5 x8 として使用する
  • PCI_E2スロットも PCI Express gen5 x8 として使用する


これが、仕様ではあのように簡単な表記で表現されています。慣れている人なら、すぐにわかりますが、慣れないと、何をいってるのか難しいところがありますね。

つまり、このマザーボードMSI MPG Z690 CARBON WIFI は X8/X8 モードをサポートしており、 X8/X8 モードを使用することで、 1枚のグラボあたり 8本のレーンを使用したグラボの2枚挿しができるというわけです。


最後に⑤⑥も一応みておきましょうか。

⑤は 「PCI_E3スロットは Z690チップセットに結線されています」
⑥は、PCI_E3スロットは PCI Express 3.0 x4 規格をサポートしています」
を意味しており、チップセット側と接続されるレーンは低速の規格であることを読み解くことができます。


PCIe3.0 x4 ということで PCI Express 3.0 規格のレーンが4本チップセットと接続されていますが、スロットの形状は x16 である点をもう一度おさえておきましょう。

まとめ

今回はPCI Express のレーン分割と、グラボ2枚挿しについて解説しました。

AI用GPUマシン自作の知識は深まってきましたでしょうか。

私たちは AI の研究や開発のための個人用パソコンで、グラフィックスボードの2枚挿しをしたいシーンがたまにありますので、その際には今回のノウハウが役にたちますが、グラフィックスボードは高性能なものほど高熱となり、2枚挿しをした環境で高負荷な処理を継続的に行うと、廃熱などエアフローに関しても適切な知識が求められますので、2枚挿しをするときには、PC自作に詳しい専門家の方の相談を仰ぎましょう。秋葉原には相談できる店員さんもたくさんいらっしゃいます。

また、グラボ複数枚挿しにはインテルCoreシリーズよりもインテル Xeon シリーズのほうがはるかに向いており、本格的なAI用途の場合はそちらがおすすめです。こちらについても、別記事で触れていきたいと思います。

事前知識はこのへんにして、
次回からは実際にGPU搭載マシンを作っていこうとおもいます!

それでは、また次回お会いしましょう!


navigation

Read more

Node.jsで大容量ファイルを扱う:AIモデルのような大きなデータ保存はストリーム処理使いましょう

Node.jsで大容量ファイルを扱う:AIモデルのような大きなデータ保存はストリーム処理使いましょう

こんにちは!今日はAIシステムのフロントサーバーとしてもよく使用するNode.jsについてのお話です。 AIモデルの普及に伴い、大容量のデータファイルを扱う機会が急増しています。LLMなどのモデルファイルやトレーニングデータセットは数GB、場合によっては数十、数百GBにも達することがあります。 一方、Node.jsはWebアプリケーションのフロントサーバーとして広く採用されており、データマネジメントやPythonで書かれたAIバックエンドとの橋渡し役としてもかなりお役立ちな存在です。 本記事では、Node.js v20LTSで5GB程度のファイルを処理しようとして遭遇した問題と、その解決方法について解説します。 Node.jsのバッファサイズ制限の変遷 Node.jsのバッファサイズ制限は、バージョンによって大きく変化してきました Node.jsバージョン サポート終了日 バッファサイズ上限 備考 Node.js 0.12.x 2016年12月31日 ~1GB 初期のバッファサイズ制限(smalloc.kMaxLength使用) Node.js 4.

By Qualiteg プロダクト開発部
AGI時代に向けたプログラマーの未来:役割変化とキャリア戦略

AGI時代に向けたプログラマーの未来:役割変化とキャリア戦略

はじめに 私がはじめてコードを書いたのは1989年です。 当時NECのPC88というパソコンを中古でかってもらい N-88 Basic というBASIC言語のコードをみようみまねで書いて動かしたあの日から何年経つのでしょうか。 当時、電波新聞社のマイコンBASICマガジンという雑誌があり、ベーマガにはいろんなパソコン向けのプログラムコードが掲載されていました。 そんなわけでもう35年以上趣味や仕事でプログラミングに従事していますが、開発環境、情報流通の仕組みには革命といっていいほどの変化、進化がおこりました。 しかしながら、そんな中でも、あくまでコードを書くのは「私」という生身の人間でした。 そうしたある種の古き良き時代は、いよいよ本格的に終わりを告げようとしています。 2023年ごろからのLLM技術の飛躍的進歩により、プログラミング業界は大きな転換期を迎えています。 特に、OpenAI o3,o1やClaude 3.5、Gemini2.0などの大規模言語モデル(LLM)の進化や、その先にある将来的な汎用人工知能(AGI)の出現は、プログラマーやAIエンジニアの役割に根

By Tomonori Misawa / CEO
PythonとWSL開発のトラブルシューティング: PyCharmとCondaの環境不一致問題

PythonとWSL開発のトラブルシューティング: PyCharmとCondaの環境不一致問題

こんにちは! 今回は、WSL上のConda環境をPyCharmから利用する際に発生した「同じ環境なのにパッケージリストが一致しない」という問題に遭遇したため、その原因と対策について書いてみたいとおもいます 問題の状況 開発の流れは以下のようなものでした 1. WSL環境でConda仮想環境を作成 2. その環境をPyCharmのプロジェクトインタプリタとして設定 3. 開発を進める中で奇妙な現象に気づく 具体的には、次のような不一致が発生していました * PyCharmのプロジェクト設定で表示されるpipパッケージのリスト * WSLでConda環境をアクティベートした後にpip listコマンドで表示されるパッケージのリスト これらが一致せず、「WSL側のシェルから直接インストールしたパッケージがPyCharmで認識されない」という問題が生じていました。 この手の問題でよくある原因は、PyCharm側がWSL側の更新を得るのに少し時間がかかったり、 Indexing が遅れているなどなのですが、今回はそれが原因ではありませんでした。 危険な「静かな

By Qualiteg プロダクト開発部
人気ゲーム「ヒット&ブロー」で学ぶ情報理論

人気ゲーム「ヒット&ブロー」で学ぶ情報理論

こんにちは! Qualiteg研究部です! 今日はAIにおいても非常に重要な情報理論について、Nintendo Switchの人気ゲーム「世界のアソビ大全51」にも収録されている「ヒット&ブロー」というゲームを題材に解説いたします! はじめに 論理的思考力を鍛える定番パズルゲームとして長年親しまれている「ヒット&ブロー」(海外では「Mastermind」として知られています)。 このゲームは一見シンプルながらも、その攻略には深い論理的アプローチが必要とされております。 本稿では、このゲームについて情報理論という数学的概念を用いてゲームの素性を分析する方法について掘り下げてみたいとおもいます。 さらに、この情報理論が現代の人工知能(AI)技術においてどのように活用されているかについても触れていきます。 ヒット&ブローのルール説明 ヒット&ブローは、相手が秘密に設定した色や数字の組み合わせを推測するゲームです。日本では主に数字を使った「数当てゲーム」として親しまれていますが、本記事では色を使ったバージョン(マスターマインド)に焦点を当てます。 Nintendo Sw

By Qualiteg 研究部