Já faz um tempo desde que fiz essa pergunta, então pensei em mencionar a solução que usamos em última análise.
Sequestrando a tela X local
No final, acabei de executar os programas opengl remotos na tela X local do servidor. A máquina rodava a edição do servidor Ubuntu e não estava rodando um xserver como padrão, então eu tive que configurar um xserver para rodar na inicialização (eu acabei de instalar o pacote ubuntu-desktop do Ubuntu, matando um mosquito com uma marreta) e então me dei acesso à tela X usando estes comandos como root: "export DISPLAY =: 0.0; xhost + local:". Então eu poderia ssh na máquina, chamar "export DISPLAY =: 0.0" e depois executar meus programas opengl normalmente. Qualquer pessoa sentada na máquina remota veria uma janela pop-up e veria meu programa rodando, mas não temos um monitor conectado, então isso não foi um problema.
É importante usar alguma forma de renderização fora da tela, porque a leitura de pixels diretamente do buffer de cores na tela pode resultar em dados inúteis se a janela ficar obscurecida por outra janela. Como você não pode ver a tela X, é difícil saber se isso aconteceu. A renderização fora da tela (por exemplo, objetos Framebuffer (fbo) ou pbuffers) não tem esse problema.
O sequestro do Xscreen local do servidor não é uma solução ideal, então aqui estão algumas alternativas que encontrei ao longo do caminho:
Virtual Framebuffers
Xvfb é uma opção, mas não funcionou para mim, porque o OpenGL não estava se beneficiando da aceleração de hardware, e os objetos framebuffer não eram suportados, que são necessários para a interoperabilidade do CUDA com o OpenGL. No entanto, isso pode ser uma opção viável quando o seqüestro da tela local não é aceitável, ou onde o usuário não pode obter privilégios de xhost.
VirtualGL
Do site da VirtualGL:
VirtualGL is an open source package which gives any Unix or Linux remote display software the ability to run OpenGL applications with full 3D hardware acceleration.
Isso é exatamente o que eu quero, e parece muito promissor, mas eu não tive tempo para lidar com uma nova dependência de biblioteca, então eu não testei isso. Meu palpite é que essa é a solução ideal, uma vez que posso compilá-la, instalá-la e configurá-la. É o que o VirtualBox e alguns servidores VNC usam para suportar 3D acelerado por hardware.