<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>V100 on KnightLiブログ</title>
        <link>https://www.knightli.com/ja/tags/v100/</link>
        <description>Recent content in V100 on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sat, 09 May 2026 15:05:41 +0800</lastBuildDate><atom:link href="https://www.knightli.com/ja/tags/v100/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>llama.cpp のマルチ GPU 性能を実測する考え方：2x V100 16GB は単体 32GB より速いのか？</title>
        <link>https://www.knightli.com/ja/2026/05/09/llama-cpp-multi-gpu-offload-performance/</link>
        <pubDate>Sat, 09 May 2026 15:05:41 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/05/09/llama-cpp-multi-gpu-offload-performance/</guid>
        <description>&lt;p&gt;大まかな結論は、llama.cpp のマルチ GPU offload は「2 枚目を足せば性能がそのまま増える」ものではない、ということです。モデルが最初から 1 枚の 32GB GPU に完全に収まるなら、2x V100 16GB は単体 32GB より扱いにくく、場合によっては遅くなります。逆に、モデルが 1 枚の 16GB に収まらないなら、2 枚構成の主な価値は「モデルを GPU に載せられること」で、その効果はかなり大きくなります。&lt;/p&gt;
&lt;h2 id=&#34;まず-split-mode-を分けて考える&#34;&gt;まず split mode を分けて考える
&lt;/h2&gt;&lt;p&gt;llama.cpp のマルチ GPU 利用では、主に &lt;code&gt;--split-mode&lt;/code&gt; と &lt;code&gt;--tensor-split&lt;/code&gt; が関係します。性能を考えるときは、まず次のモードを分けて見ます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;layer&lt;/code&gt;：層ごとに別の GPU へ分割する方式。互換性が高く、多くの場合は最初に試す選択肢です。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tensor&lt;/code&gt;：テンソル計算を複数 GPU に分割する方式。より並列計算に近い一方で、GPU 間の帯域とバックエンド対応に強く依存します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;row&lt;/code&gt;：古い行分割方式です。今でも見かけますが、新規構成で最初に選ぶ方式ではありません。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡単に言えば、&lt;code&gt;layer&lt;/code&gt; は「階ごとに別のカードへ置く」ようなものです。単一 token 生成時には、2 枚のカードを同時に常に使い切れるとは限りません。&lt;code&gt;tensor&lt;/code&gt; は「同じ層を 2 枚のカードで一緒に計算する」形に近く、理論上は並列性がありますが、カード間通信がボトルネックになります。&lt;/p&gt;
&lt;h2 id=&#34;単体-32gb-に収まるなら双-16gb-が速いとは限らない&#34;&gt;単体 32GB に収まるなら、双 16GB が速いとは限らない
&lt;/h2&gt;&lt;p&gt;モデルと KV cache が 1 枚の 32GB GPU に完全に収まるなら、単体カードのほうが安定し、速いことも多いです。1x V100 32GB と 2x V100 16GB のような同世代ハードウェアでは、後者が必ず勝つとは言えません。&lt;/p&gt;
&lt;p&gt;保守的に見ると、2x V100 16GB は単体 V100 32GB より 10% から 40% 遅くなることがあります。特に、一人でのチャット、Continue Agent、コード Q&amp;amp;A のように、1 回のリクエストで主に 1 つの回答を生成する用途ではそうなりやすいです。&lt;/p&gt;
&lt;p&gt;理由は単純です。マルチ GPU は VRAM を単純に 1 つの高速なプールへ合体するわけではありません。layer 分割では推論が GPU 間を移動し、token 生成時に片方の GPU がもう片方を待つことがあります。tensor 分割では 2 枚で同時に計算できますが、中間結果の同期が必要になり、帯域と遅延がスループットに直接効きます。&lt;/p&gt;
&lt;p&gt;つまり選択肢が次の 2 つなら、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x V100 32GB&lt;/li&gt;
&lt;li&gt;2x V100 16GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;対象モデルがすでに 1 枚の 32GB に完全に収まる場合、単体 32GB のほうが使いやすいことが多いです。&lt;/p&gt;
&lt;h2 id=&#34;単体-16gb-に収まらないなら双カードの価値は大きい&#34;&gt;単体 16GB に収まらないなら、双カードの価値は大きい
&lt;/h2&gt;&lt;p&gt;一方で、モデルが 1 枚の 16GB に収まらず、2 枚の 16GB なら収まる場合は話が変わります。&lt;/p&gt;
&lt;p&gt;このとき双カードの価値ははっきりしています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 枚の 16GB：大量の CPU offload が必要になり、速度が大きく落ちる可能性があります。&lt;/li&gt;
&lt;li&gt;2x 16GB：重みをできるだけ GPU に残せるため、CPU/GPU 混在実行よりかなり速くなる可能性があります。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この場面では、2x V100 16GB が単体 32GB より速いとは限りません。それでも「1 枚 16GB と大量のシステムメモリ offload」より数倍速いことはあります。つまり双カードの第一の価値は加速ではなく、モデル重みを遅いシステムメモリへ落とさずに済むことです。&lt;/p&gt;
&lt;h2 id=&#34;v100-pcie-と-v100-sxm2-は大きく違う&#34;&gt;V100 PCIe と V100 SXM2 は大きく違う
&lt;/h2&gt;&lt;p&gt;マルチ GPU 推論で見落としやすいのがインターコネクトです。&lt;/p&gt;
&lt;p&gt;V100 SXM2 で、マシンに NVLink がある場合、GPU 間通信帯域はかなり高くなります。NVIDIA の V100 資料では、NVLink の相互接続帯域は最大 300GB/s とされています。この環境なら、&lt;code&gt;tensor&lt;/code&gt; や大きめの batch を使う場面で、単体カードに近い性能、あるいはそれを超える性能を狙いやすくなります。&lt;/p&gt;
&lt;p&gt;V100 PCIe の場合は、もっと保守的に見るべきです。V100 PCIe の相互接続は主に PCIe Gen3 で、資料上の interconnect bandwidth は 32GB/s です。NVLink とは桁が違うため、PCIe 双カードでは「VRAM は足りるが速度は 2 倍にならない」ことがよくあります。&lt;/p&gt;
&lt;p&gt;そのため 2x V100 16GB が価値ある構成かを判断するときは、VRAM を足して 32GB と見るだけでは足りません。PCIe 版なのか、SXM2/NVLink 版なのかも確認する必要があります。&lt;/p&gt;
&lt;h2 id=&#34;実際にはどう選ぶか&#34;&gt;実際にはどう選ぶか
&lt;/h2&gt;&lt;p&gt;モデルが 1 枚の 32GB GPU に収まるなら、まず単体カードを優先します。遅延、安定性、調整コストの面で有利なことが多いです。&lt;/p&gt;
&lt;p&gt;モデルが 1 枚の 16GB には収まらず、2 枚の 16GB なら収まるなら、双カードは使う価値があります。この場合の目的は、重みをできるだけ GPU に残すことであり、性能が線形に倍増することを期待することではありません。&lt;/p&gt;
&lt;p&gt;V100 PCIe の双カードなら、まず &lt;code&gt;--split-mode layer&lt;/code&gt; を試し、「安定して動くこと」と「CPU に落とす量を減らすこと」を目標にします。&lt;/p&gt;
&lt;p&gt;V100 SXM2/NVLink なら、&lt;code&gt;tensor&lt;/code&gt; 関連のモードを試す価値が高くなります。特に prefill、大きい batch、同時リクエストの場面で有効です。&lt;/p&gt;
&lt;h2 id=&#34;いつ-2x16gb-を買いいつ-1x32gb-を買うか&#34;&gt;いつ 2x16GB を買い、いつ 1x32GB を買うか
&lt;/h2&gt;&lt;p&gt;一人で使い、主にチャット、コード補完、Continue Agent、長文コンテキスト Q&amp;amp;A を行い、対象モデルが 32GB に収まるなら、1x32GB のほうが一般的にはおすすめです。GPU 間スケジューリングがなく、遅延が安定し、問題切り分けも簡単です。&lt;/p&gt;
&lt;p&gt;すでに 16GB カードを 1 枚持っていて、低コストで 30B、32B、または高めの量子化モデルを動かしたいなら、2x16GB には意味があります。token/s が倍になるとは限りませんが、本来 CPU offload が必要だった重みを GPU に残せます。&lt;/p&gt;
&lt;p&gt;新規に購入するなら、優先度は次のように考えられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;単一モデル、単一ユーザー、応答遅延重視：1x32GB を優先。&lt;/li&gt;
&lt;li&gt;モデルが単体カードに収まらず、予算が限られる：2x16GB を検討。&lt;/li&gt;
&lt;li&gt;NVLink または SXM2 マシンがある：2x16GB の有用性は通常の PCIe 双カードよりかなり高い。&lt;/li&gt;
&lt;li&gt;将来さらに長いコンテキストを使いたい：重みサイズだけでなく、KV cache 用の VRAM も残す。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;layer-split-と-tensor-split-の実用的な使い方&#34;&gt;layer split と tensor split の実用的な使い方
&lt;/h2&gt;&lt;p&gt;実用上のおすすめは、まず &lt;code&gt;layer&lt;/code&gt;、次に &lt;code&gt;tensor&lt;/code&gt; を測ることです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;layer&lt;/code&gt; は出発点に向いています。モデルを層単位で分配し、互換性が高く、PCIe 双カードにも比較的向いています。欠点は、生成段階がパイプラインのようになり、ある時点では片方のカードだけが忙しく、もう片方が待つことがある点です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tensor&lt;/code&gt; は、V100 SXM2/NVLink のように相互接続帯域が高いマシンに向いています。同じ層の計算の一部を複数 GPU に分けるため、理論上は並列性があります。ただしカード間同期が増えます。PCIe 双カードでは、通信コストが利益を食いつぶす可能性があります。&lt;/p&gt;
&lt;p&gt;実際のテストは、まず次のような組み合わせから始めます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;3 つ目は長期運用向けではありません。単体カードの参照値を取るためです。これにより、双カードが本当に速いのか、それとも単に VRAM 圧力を分散しているだけなのかを見分けられます。&lt;/p&gt;
&lt;h2 id=&#34;prefill-と-decode-で性能が違う理由&#34;&gt;prefill と decode で性能が違う理由
&lt;/h2&gt;&lt;p&gt;ローカル LLM の性能は、通常 2 つの段階に分けて見るべきです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;prefill&lt;/code&gt;：入力 prompt を処理します。代表的な指標は &lt;code&gt;pp512&lt;/code&gt; のような prompt processing スループットです。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decode&lt;/code&gt;：回答を token ごとに生成します。代表的な指標は &lt;code&gt;tg128&lt;/code&gt; のような token generation スループットです。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;prefill&lt;/code&gt; は大きな batch の行列計算に近く、GPU を使い切りやすく、マルチ GPU 並列化の恩恵も受けやすいです。&lt;code&gt;decode&lt;/code&gt; は 1 token ずつ生成するため、batch が小さく同期が頻繁です。そのためカード間通信とスケジューリング遅延が表に出やすくなります。&lt;/p&gt;
&lt;p&gt;そのため、双カードで &lt;code&gt;pp512&lt;/code&gt; は良くなるのに、&lt;code&gt;tg128&lt;/code&gt; はほとんど改善しない、あるいは遅くなることがあります。チャットや Agent の体感は &lt;code&gt;tg128&lt;/code&gt; に近く、長文投入、batch prefill、同時リクエスト処理では &lt;code&gt;pp512&lt;/code&gt; も重要になります。&lt;/p&gt;
&lt;h2 id=&#34;kv-cache-は第-2-の-vram-ボトルネックになるか&#34;&gt;KV cache は第 2 の VRAM ボトルネックになるか
&lt;/h2&gt;&lt;p&gt;なります。多くの人はモデル重みだけを計算し、KV cache を忘れます。&lt;/p&gt;
&lt;p&gt;モデル重みは「モデルをロードできるか」を決めます。KV cache は「必要なコンテキスト長を使えるか」を決めます。コンテキストが長く、同時実行が多く、batch が大きいほど、KV cache の占有は目立ちます。モデル本体は 32GB に収まるのに、32K や 64K コンテキストを開くと VRAM が足りなくなることがあります。&lt;/p&gt;
&lt;p&gt;少なくとも次の分の VRAM 余裕を残して考えるべきです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KV cache&lt;/li&gt;
&lt;li&gt;CUDA graph またはバックエンドのランタイムオーバーヘッド&lt;/li&gt;
&lt;li&gt;prompt batch と ubatch&lt;/li&gt;
&lt;li&gt;デスクトップ、ドライバ、他プロセスの使用量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2x16GB を使う場合、VRAM は完全に等価な 32GB の大きなプールではありません。一部のバッファ、KV cache、中間テンソルは、単一カードの残り VRAM に制限される場合があります。長文コンテキストを測るときは、モデルが起動するかだけでなく、実際の &lt;code&gt;--ctx-size&lt;/code&gt; と同時実行数でテストするのが安全です。&lt;/p&gt;
&lt;h2 id=&#34;llama-bench-で双カードを自分で測る&#34;&gt;llama-bench で双カードを自分で測る
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama-bench&lt;/code&gt; は、直接チャットするよりハードウェア比較に向いています。prompt processing と token generation を分けて比較できるためです。公式 README の基本例は次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;双 V100 なら、少なくとも次の組み合わせを測ります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Single-card baseline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Dual-card layer split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Dual-card tensor split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特に見るべき列は 2 つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;：prompt processing。長い入力や batch prefill に関係します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;：token generation。単一ユーザーのチャットや Agent の体感に関係します。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;テスト時は、モデル、量子化形式、コンテキスト長、batch、ドライババージョン、llama.cpp バージョンを固定します。各組み合わせを複数回実行し、一度だけの結果ではなく中央値で比べるほうが信頼できます。最後に、Continue Agent、OpenAI-compatible server、自分の RAG リクエストなど、実際のワークフローでも確認します。benchmark が良くても、対話体験が必ず良くなるとは限らないためです。&lt;/p&gt;
&lt;h2 id=&#34;一言でまとめると&#34;&gt;一言でまとめると
&lt;/h2&gt;&lt;p&gt;2x V100 16GB の強みは主に VRAM 容量であり、生成速度が必ず上がることではありません。モデルが単体カードに収まるなら、単体 32GB のほうが速く安定しやすいです。モデルが 1 枚 16GB に収まらないなら、双 16GB の価値は大きくなります。大量の CPU offload を避けられるためです。実際に速くなるかは、split mode、batch、モデルサイズ、そして 2 枚の V100 が PCIe でつながっているのか NVLink なのかで決まります。&lt;/p&gt;
&lt;p&gt;参考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp server README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mintlify.com/ggml-org/llama.cpp/concepts/backends&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp Compute Backends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-gb/data-center/tesla-v100/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA Tesla V100&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://images.nvidia.com/content/technologies/volta/pdf/tesla-volta-v100-datasheet.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA V100 Datasheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
