Software

From Wikidigiscope
Jump to: navigation, search

This page contains various interesting resources about software related to Digiscope, gathered by the Technical Committee members or project partners.
Some of these entries can link to documents, web sites and to associated Hardware resources or Suppliers information.

Contents

Distributed Multimedia

See Distributed Multimedia Middlewares.

Rendering

General-purpose distributed rendering

Equalizer graphics
A framework for distributed rendering of OpenGL. It is necessary to compile explicitly for Equalizer (with a GLUT-like API), and it needs some time to get familiar with all the concepts introduced by the framework. Works on all major platforms, supports recent OpenGL extensions, and also allows cluster-based rendering (using computers to compute images without displaying them).
Chromium
A library for distributed rendering of OpenGL. Does not need to modify an application already written for OpenGL, so it is simpler than Equalizer. However, recent OpenGL extensions are not supported as the code has not been updated since 2006 (and does not compile on Mac OS X).
WILDGraphics2d (requires login)
A Java package that distributes Java2D rendering in a way that is transparent for the developer.


Rendering of Scientific Data

Paraview
A distributed scientific visualization application based on Vtk.
VisIt
Another scientific visualization application based on Vtk that is supposed to be richer than Paraview. It supports remote rendering of data produced by distributed computation, but it is not clear if it supports distributed rendering.
WILDMol, MoliScope and WX Moliscope
WILDMol is a python script allowing the molecular visualization system PyMol to render in a distributed way, developed by Clément Pillias for the WILD platform. It also supports remote control by a PyMol application and other interaction techniques. With the official PyMol distribution, it only supports orthoscopic projection, but Nicolas Ferey has made a modified version of PyMol to allow distributed perspective. The script has been extended to support dual-stereo rendering in the EVE platform and is now known as MoliScope. This project then evolved into WX Moliscope (which is a work in progress), which adds a UI to the application (based on wx python), and a telepresence layer. The objective is also to extract as much potentially generic code from the MoliScope for re-use across Digiscope projects.

Input Handling

VRPN
Virtual-Reality Peripheral Network (VRPN) is a library and a set of tools that are designed to implement a network-transparent interface between application programs and physical input devices
ART
Advanced real-time tracking system used in EVE, SHIVA and PIXLS
WILD input server
WIS for short, based on ICON (input configuration library)
PQLABS
Touch screen system used in WILDER and PIXLS

Collaboration

A few open-source collaboration tools are available:

BigBlueButton is an open-source collaboration platform based on Flex


Videoconference

...

Telepresence

...

Xorg

ECP

Après moultes péripéties, voici le xorg de l'ECP qui permet d'avoir un vrai bureau étendu sous Linux en 4K à 120Hz.

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 340.65  (buildmeister@swio-display-x64-rhel04-11)  Tue Dec  2 09:59:19 PST 2014

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 340.65  (buildmeister@swio-display-x64-rhel04-11)  Tue Dec  2 09:59:38 PST 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "1"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from data in "/etc/sysconfig/keyboard"
    Identifier     "Keyboard0"
    Driver         "keyboard"
    Option         "XkbLayout" "fr"
    Option         "XkbModel" "pc105"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "CDG CHRISTIE"
    HorizSync       16.0 - 200.0
    VertRefresh     24.0 - 120.0
    ModeLine       "2048x1080_120.00" 393.19 2048 2216 2440 2832 1080 1081 1084 1157 -hsync +vsync
    Option         "DPMS"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "LWR UniversalEDID"
    HorizSync       31.5 - 80.0
    VertRefresh     56.2 - 75.0
    ModeLine       "2048x1080_120.00" 393.19 2048 2216 2440 2832 1080 1081 1084 1157 -hsync +vsync
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro K6000"
    BusID          "PCI:4:0:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro K6000"
    BusID          "PCI:131:0:0"
EndSection

Section "Screen"

    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "3"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "GPU-638e42d6-dc27-1e85-f163-2176a846b494.DVI-I-1: 2048x1080_120 +0+0, GPU-638e42d6-dc27-1e85-f163-2176a846b494.DVI-D-0: 2048x1080_120 +0+1080, GPU-95720d47-408e-e6aa-9c35-db594832044a.DVI-I-1: 2048x1080_120 +2048+0, GPU-95720d47-408e-e6aa-9c35-db594832044a.DVI-D-0: 2048x1080_120 +2048+1080"
    Option         "MultiGPU" "Off"
    Option         "SLI" "Mosaic"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

MDLS

Pour les noeuds bi-GPUs, on doit définir deux layouts (donc deux sessions X11) dans le Xorg :

fichier /etc/X11/xorg.conf.2X


Section "Module"
    Load  "dbe"
    Load  "extmod"
    Load  "fbdevhw"
    Load  "v4l"
    Load  "glx"
    Load  "record"
    Load  "freetype"
    Load  "type1"
EndSection

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "SingleCard" "true"
EndSection

Section "ServerLayout"
    Identifier     "Layout1"
    Screen      1  "screen1" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "SingleCard" "true"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BPS XDS-1000"
    HorizSync       20.0 - 151.0
    VertRefresh     24.0 - 121.0
    ModeLine       "1920x2160_60.00" 356.17 1920 2072 2288 2656 2160 2161 2164 2235 -hsync +vsync
    Option         "DPMS"
    # 1920x2160 @ 60.00 Hz (GTF) hsync: 134.10 kHz; pclk: 356.17 MHz
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "BPS XDS-1000"
    HorizSync       20.0 - 151.0
    VertRefresh     24.0 - 121.0
    ModeLine       "1920x2160_60.00" 356.17 1920 2072 2288 2656 2160 2161 2164 2235 -hsync +vsync
    Option         "DPMS"
    # 1920x2160 @ 60.00 Hz (GTF) hsync: 134.10 kHz; pclk: 356.17 MHz
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro K5000"
    BusID          "PCI:10:0:0"
    Option         "Stereo" "3"
    Option         "TwinView" "0"
    Option         "RenderAccel" "true"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro K5000"
    BusID          "PCI:39:0:0"
    Option         "Stereo" "3"
    Option         "TwinView" "0"
    Option         "RenderAccel" "true"
EndSection

Section "Screen"

    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    #Option         "metamodes" "1920x2160 +0+0"
    Option         "MetaModes" "GPU-0.DFP-0: 1920x2160+0+0"
    Option         "SLI" "Off"
#    Option         "SLI" "Mosaic"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "TwinView" "true"
    Option         "nvidiaXineramaInfo" "0"
    Option         "Stereo" "3"
    Option         "UBB" "TRUE"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "metamodes" "GPU-1.DFP-0: nvidia-auto-select +0+0"
    #Option         "MetaModes" "GPU-1.DFP-0: 1920x2160+1920+0"
    #Option         "MetaModes" "GPU-1.DFP-0: 1920x2160+0+0"
    Option         "SLI" "Off"
#    Option         "SLI" "Mosaic"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "TwinView" "true"
    Option         "nvidiaXineramaInfo" "0"
    Option         "Stereo" "3"
    Option         "UBB" "TRUE"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Extensions"
    Option         "Composite" "Disable"
EndSection

Il faut adapter les adresses PCI de vos GPUs.

et voici un exemple d'appel par noeud pour démarrer deux sessions X :

#!/bin/sh

xinit -- :0 -nolisten tcp -novtswitch -sharevts -allowMouseOpenFail -config xorg.conf.2X -layout "Layout0" vt6 > /tmp/.xorg_$$_:0.log 2>&1 &
#> /dev/null 2>&1 &
xinit -- :1 -nolisten tcp -novtswitch -sharevts -allowMouseOpenFail -config xorg.conf.2X -layout "Layout1" vt7 > /tmp/.xorg_$$_:1.log 2>&1 &
#> /dev/null 2>&1

sleep 10

export DISPLAY=:0
xhost +
xset -dpms
xset s noblank
xset s off 
/usr/local/bin/vnc-server_2X $DISPLAY 2>&1 | tee -a /tmp/x11vnc.debug_${HOSTNAME}_${DISPLAY} &
#> /dev/null 2>&1 &

export DISPLAY=:1
xhost +
xset -dpms
xset s noblank
xset s off 
/usr/local/bin/vnc-server_2X $DISPLAY 2>&1 | tee -a /tmp/x11vnc.debug_${HOSTNAME}_${DISPLAY} &
#> /dev/null 2>&1 &
Personal tools