1つのGPUを多数のユーザで使用する

初期のコンピュータは非常に高価であったので、各ユーザが10msずつプロセサを使い、次々とユーザを切り替えるTime Sharing System(TSS)が開発された。TSSの歴史は1961年にIBMが開発したCTSSまで遡り、50年以上の歴史がある。今では、このような時分割処理はPCでも一般的で、多数のウインドウの処理が時分割で実行され、人間には同時に動いているように見えるようになっている。

PCの場合は、1台のPCにすべての機能やプログラムが入っていて処理を実行するのであるが、会社などで多数台のPCが使われている場合は、それぞれのPCのソフトのアップデータやパッチの適用はSysadminの大きな負担となっている。このため、仮想マシン技術を使って中央のサーバでユーザごとの仮想PCを立ち上げ、その上でPCアプリを動かすという使用法も行われている。こうすれば、各ユーザのPCを触ることなく、パッチの適用ができ、Sysadminの仕事は大幅に効率化できる。

昔はハードの能力不足や通信が遅いなどの問題で、このようなシステムは遅くて使い勝手が悪いと言われた時代もあったが、最近では、このような仮想PCも十分使い易くなっている。ただし、それはCPU中心のアプリケーションであり、グラフィックスを多用するアプリケーションでは仮想PCのグラフィックス能力が不足していた。

NVIDIAは、この問題の解決策として、強力なGPUを多数ユーザで分割使用し、生成された画面データをH.264でエンコードしてネットワーク経由で伝送して、PCなどのWebブラウザで表示するという技術を開発した。このような方法で、多数のユーザが1つのGPUを共有できるのかという疑問があるが、インダストリアルデザイナーのような専用のグラフィックワークステーションを必要とするユーザの場合は2人、一般的なビジネスユーザの場合は数十人が1つのGPUを共用できるという。

デモでは、このようなリモート環境でアクションゲームを実行しても、違和感のない画像と応答時間が得られており、実用になるという感触であった。つまり、NVIDIAのGPUを仮想化して多数ユーザで同時使用する技術を使えば、グラフィックスを多用するアプリケーションのユーザを仮想PCでサポートすることが出来るようになる。そして、企業ではサーバ側ですべての仮想PCがサポート出来てSysadminの仕事が効率化され、ユーザからは強力なGPUを持たないタブレットでもリモートで画像処理ができるということになる。さらに、企業秘密のCADのデータベースを社外に持ちだす必要はないので、セキュリティ上の問題も軽減されるというメリットがある。

実行途中の処理を切り替えるプリエンプション

多数のユーザでGPUを共有する場合には問題がある。CPUでは、例えば、1つのプログラム与えられた10msの実行時間が経過すると割り込みが発生し、次のユーザの処理に切り替えられる。そして、現在の処理を再開するために必要なデータを保存して、他のユーザの処理に切り替える。

CPUの場合は少数のレジスタを退避すれば、(SMPの場合は、メモリは保存されているので)再開が可能である。しかし、GPUの場合は、そのスレッドのローカルメモリも保存する必要がある。したがって、GPUの場合は、CPUに比べて、スレッド切替に時間がかかることはやむを得ないと思われる。

しかし、データをサーバに置いたままで、セキュリティの懸念がなく、複数のクライアントからリモートアクセスできるというメリットは大きく、このような使い方は広く使われるようになると考えられる。