私がこの質問をしたのは久しぶりなので、最終的に使用したソリューションについて触れておきたいと思います。
ローカルXスクリーンのハイジャック
結局、サーバーのローカルX画面でリモートのopenglプログラムを実行しただけです。マシンはUbuntuサーバーエディションを実行しており、デフォルトではxserverを実行していなかったため、起動時に実行するようにxserverを設定する必要がありました(Ubuntuのubuntu-desktopパッケージをインストールし、蚊を大ハンマーで殺しました)。 rootとして次のコマンドを使用して、X画面にアクセスできるようになりました: "export DISPLAY =:0.0; xhost + local:"。次に、マシンにSSHでログインし、「export DISPLAY =:0.0」を呼び出して、openglプログラムを通常どおり実行します。リモートマシンに座っている人は誰でもウィンドウポップアップを表示して私のプログラムの実行を監視しますが、モニターが接続されていないため、これは問題ではありませんでした。
オンスクリーンカラーバッファーから直接ピクセルを読み取ると、ウィンドウが別のウィンドウで隠れてしまうと、ガベージデータが発生する可能性があるため、何らかの形式のオフスクリーンレンダリングを使用することが重要です。X画面が表示されないため、これが発生したかどうかを確認することは困難です。オフスクリーンレンダリング(フレームバッファオブジェクト(fbo)やpbuffersなど)には、この問題はありません。
サーバーのローカルXscreenをハイジャックすることは理想的なソリューションではないので、途中で見つけたいくつかの代替策を以下に示します。
仮想フレームバッファ
Xvfbはオプションですが、OpenGLはハードウェアアクセラレーションの恩恵を受けておらず、OpenGLとのCUDAの相互運用に必要なフレームバッファオブジェクトはサポートされていなかったため、私には機能しませんでした。それでも、これは、ローカル画面のハイジャックが受け入れられない場合、またはユーザーがxhost特権を取得できない場合に実行可能なオプションである可能性があります。
VirtualGL
VirtualGL Webサイトから:
VirtualGLは、UnixまたはLinuxのリモートディスプレイソフトウェアに完全な3DハードウェアアクセラレーションでOpenGLアプリケーションを実行する機能を提供するオープンソースパッケージです。
これはまさに私が望んでいることであり、非常に有望に見えますが、新しいライブラリの依存関係に対処する時間がないため、テストしていません。私の推測では、コンパイル、インストール、構成を行うことができれば、これが理想的なソリューションだと思います。これは、VirtualBoxおよび一部のVNCサーバーがハードウェアアクセラレーション3Dをサポートするために使用するものです。