Uzaktan ekran dışı oluşturma


10

Araştırma laboratuvarım kısa bir süre önce bilimsel hesaplamalar yapmak için kullanmak istediğimiz etli bir NVIDIA grafik kartı olan bir sunucu ekledi. Bu bir iş istasyonu olmadığından, işlerimizi ssh bağlantısı üzerinden uzaktan yürütmemiz gerekecek. Uygulamalarımızın çoğu, bir ekran dışı arabelleğe opengl oluşturma, ardından CUDA'da görüntü analizi yapmayı gerektirir.

İlk araştırmam X11 iletmenin kötü bir fikir olduğunu gösteriyor, çünkü istemci makinede (veya daha çok X11 sunucusunda - ne kafa karıştırıcı bir adlandırma kuralı!) Opengl oluşturma gerçekleşecek ve büyük dokularımızı gönderirken ağ darboğazlarına maruz kalacaktır. Çıktıyı asla göstermemiz gerekmeyecek, bu nedenle X11 iletimi gerekli olmayacak gibi görünüyor, ancak Opengl $ DISPLAY'in geçerli bir şeye ayarlanması gerekiyor veya uygulamalarımız çalışmaz. Eminim bunu yapan render çiftlikleri vardır, ama nasıl yapılır? Bu muhtemelen basit bir X11 yapılandırma sorunu olduğunu düşünüyorum, ancak nereden başlayacağımı bilmiyorum.

Gdm, gnome vb. Yüklü olmayan Ubuntu sunucusu 10.04 çalıştırıyoruz. Ancak, xserver-xorg paketi yüklenir.


<code> x11vnc </code> 'u denerdim, ama çalışmak pek mümkün değil
Hubert Kario

Yanıtlar:


6

Bu soruyu sorduğumdan bu yana bir süre geçti, bu yüzden sonuçta kullandığımız çözümden bahsedeceğim.

Yerel X ekranını ele geçirme

Sonunda, uzak opengl programlarını sunucunun yerel X ekranında çalıştırdım. Makine Ubuntu sunucu sürümünü çalıştırıyordu ve varsayılan olarak bir xserver çalıştırmıyordu, bu yüzden başlangıçta çalıştırmak için bir xserver kurmak zorunda kaldım (sadece Ubuntu'nun ubuntu-masaüstü paketini kurdum, bir balyozla bir sivrisinek öldürdüm) ve sonra kendime X komutuna root olarak şu komutları kullanarak erişme izni verdi: "export DISPLAY =: 0.0; xhost + local:". Sonra makineye ssh, "ihracat DISPLAY =: 0.0" arayın ve sonra opengl programlarımı normal olarak çalıştırabilir. Uzak makinede oturan herkes bir pencere açılır ve programımın çalışmasını izlerdi, ancak bağlı bir monitörümüz yok, bu yüzden bu bir problem değildi.

Bazı ekran dışı görüntü oluşturma yöntemlerini kullanmak önemlidir, çünkü pencereleri doğrudan ekran renk arabelleğinden okumak pencere başka bir pencere tarafından gizlenirse çöp verisine neden olabilir. X ekranını göremediğiniz için bunun olup olmadığını bilmek zor. Ekran dışı oluşturma (örn. Framebuffer nesneleri (fbo) veya pbuffers) bu sorunla karşılaşmaz.

Sunucunun yerel Xscreen'ini ele geçirmek ideal bir çözüm değildir, bu yüzden yol boyunca bulduğum birkaç alternatif var:

Sanal Çerçeve Tamponları

Xvfb bir seçenektir, ancak benim için işe yaramadı, çünkü OpenGL donanım hızlandırmasından yararlanmadı ve OpenGL ile CUDA ile birlikte çalışabilirlik için gerekli olan çerçeve tampon nesneleri desteklenmedi. Bununla birlikte, bu, yerel ekranın ele geçirilmesinin kabul edilemez olduğu veya kullanıcının xhost ayrıcalıklarını alamadığı uygulanabilir bir seçenek olabilir.

VirtualGL

VirtualGL web sitesinden:

VirtualGL, herhangi bir Unix veya Linux uzak ekran yazılımına OpenGL uygulamalarını tam 3D donanım hızlandırması ile çalıştırma olanağı veren açık kaynaklı bir pakettir.

Bu tam olarak istediğim şey ve çok umut verici görünüyor, ancak yeni bir kütüphane bağımlılığıyla başa çıkmak için zamanım yoktu, bu yüzden test etmedim. Benim tahminim, derlediğimde, kurulduktan ve yapılandırıldıktan sonra bu ideal çözümdür. VirtualBox ve bazı VNC sunucuları donanım hızlandırmalı 3D'yi desteklemek için bunu kullanır.


0

makinede bir vfb- sanal çerçeve arabelleği çalıştırabilirsiniz, bu kukla bir X11 gibidir. Daha önce hiç bakmadığımız bir Xwindow açmak için HAD uygulamaları çalıştırıyorduk ve sadece vfb'yi yükledik ve $ DISPLAY'ı ona verdik - biraz HTH'deki ekran gibi


2
Bahşiş için teşekkürler! Ben xvfb içine bakmaya başladım ve işleme grafik donanım kullanmıyor, bunun yerine sanal belleğe dönüştürüyor gibi görünüyor. Herkes bunu onaylayabilir / reddedebilir mi? Durum böyleyse, bu çözümün iyi olmayacağını düşünüyorum, çünkü grafik kartımızın gücünden yararlanmak istiyoruz.
redmoskito
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.