1 mpiglut: powerwall programming made easier dr. orion sky lawlor u. alaska fairbanks wscg...
DESCRIPTION
3 MPIglut BasicsTRANSCRIPT
![Page 1: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/1.jpg)
1
MPIglut: Powerwall Programming made Easier
Dr. Orion Sky LawlorU. Alaska Fairbanks
http://lawlor.cs.uaf.edu/WSCG '08, 2008-02-05
![Page 2: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/2.jpg)
2
Talk Overview●MPIglut: lets serial glut OpenGL apps run in parallel atop MPI
Powerwall Hardware & Software Parallel Rendering Software
●MPIglut code & runtime changes ●Application Performance●Future work
![Page 3: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/3.jpg)
3
MPIglut Basics
![Page 4: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/4.jpg)
4
MPIglut: Motivation●Modern computing is parallel
Multi-Core CPUs, Clusters•Athlon 64 X2, Intel Core2 Duo
Multiple Multi-Unit GPUs •nVidia SLI, ATI CrossFire
Multiple Displays●But languages and many existing applications are sequential
Software problem: run existing serial code on a parallel machine
Related: easily write parallel code
![Page 5: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/5.jpg)
5
What is a “Powerwall”?●A powerwall has:
Several physical display devices
One large virtual screenI.E. “parallel screens”
●UAF CS/Bioinformatics Powerwall Twenty LCD panels 9000 x 4500 pixels combined
resolution 35+ Megapixels
![Page 6: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/6.jpg)
6
Sequential OpenGL Application
![Page 7: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/7.jpg)
7
Parallel Powerwall Application
![Page 8: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/8.jpg)
8
MPIglut: The basic idea●Users compile their OpenGL/glut application using MPIglut, and it “just works” on the powerwall●MPIglut's version of glutInit runs a separate copy of the application for each powerwall screen●MPIglut intercepts glutInit, glViewport, and broadcasts user events over the network●MPIglut's glViewport shifts to render only the local screen
![Page 9: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/9.jpg)
9
MPIglut uses MPI parallel library
●MPI: Message Passing Interface Standardized communication library
for distributed-memory parallel machines (like clusters)
●MPI runs over many networks; several software implementations
MPICH, OpenMPI, AMPI●MPIglut uses MPI to compile (mpiCC), start-up (mpirun), event broadcast, and synchronization
MPIglut apps can call MPI too!
![Page 10: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/10.jpg)
10
MPIglut uses glut sequential code
●GL Utilities Toolkit Portable window, event, and GUI
functionality for OpenGL apps De facto standard for small apps Several implementations: Mark
Kilgard original, FreeGLUT, ... Totally sequential library, until now!
●MPIglut intercepts several calls But many calls still unmodified We run on a patched freeglut 2.4
•Minor modification to window creation
![Page 11: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/11.jpg)
11
Parallel Rendering Taxonomy
●Molnar's influential 1994 paper Sort-first: send geometry across
network before rasterization (GLX/DMX, Chromium)
Sort-middle: send scanlines across network during rasterization
Sort-last: send rendered pixels across the network after rendering (IBM's Scalable Graphics Engine, ATI CrossFire)
![Page 12: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/12.jpg)
12
Parallel Rendering Taxonomy
●Expanded taxonomy: Send-event (MPIglut, VR Juggler)
•Send only user events (mouse clicks, keypresses). Just kilobytes/sec!
Send-database•Send application-level primitives, like
terrain model. Can cache/replicate data! Send-geometry (Molnar sort-first) Send-scanlines (Molnar sort-middle) Send-pixels (Molnar sort-last)
![Page 13: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/13.jpg)
13
Code & Runtime Changes
![Page 14: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/14.jpg)
14
MPIglut Conversion: Original Code#include <GL/glut.h>void display(void) {
glBegin(GL_TRIANGLES); ... glEnd();glutSwapBuffers();
}void reshape(int x_size,int y_size) {
glViewport(0,0,x_size,y_size);glLoadIdentity();gluLookAt(...);
}...int main(int argc,char *argv[]) {
glutInit(&argc,argv);glutCreateWindow(“Ello!”);glutMouseFunc(...);...
}
![Page 15: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/15.jpg)
15
MPIglut: Required Code Changes#include <GL/mpiglut.h>void display(void) {
glBegin(GL_TRIANGLES); ... glEnd();glutSwapBuffers();
}void reshape(int x_size,int y_size) {
glViewport(0,0,x_size,y_size);glLoadIdentity();gluLookAt(...);
}...int main(int argc,char *argv[]) {
glutInit(&argc,argv);glutCreateWindow(“Ello!”);glutMouseFunc(...);...
}
This is the only source change.Or, you can just copy mpiglut.h over your old glut.h header!
![Page 16: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/16.jpg)
16
MPIglut Runtime Changes: Init#include <GL/mpiglut.h>void display(void) {
glBegin(GL_TRIANGLES); ... glEnd();glutSwapBuffers();
}void reshape(int x_size,int y_size) {
glViewport(0,0,x_size,y_size);glLoadIdentity();gluLookAt(...);
}...int main(int argc,char *argv[]) {
glutInit(&argc,argv);glutCreateWindow(“Ello!”);glutMouseFunc(...);...
}
MPIglut starts a separate copy of the program (a “backend”) to drive each powerwall screen
![Page 17: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/17.jpg)
17
MPIglut Runtime Changes: Events#include <GL/mpiglut.h>void display(void) {
glBegin(GL_TRIANGLES); ... glEnd();glutSwapBuffers();
}void reshape(int x_size,int y_size) {
glViewport(0,0,x_size,y_size);glLoadIdentity();gluLookAt(...);
}...int main(int argc,char *argv[]) {
glutInit(&argc,argv);glutCreateWindow(“Ello!”);glutMouseFunc(...);...
}
Mouse and other user input events are collected and sent across the network. Each backend gets identical user events (collective delivery)
![Page 18: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/18.jpg)
18
MPIglut Runtime Changes: Sync#include <GL/mpiglut.h>void display(void) {
glBegin(GL_TRIANGLES); ... glEnd();glutSwapBuffers();
}void reshape(int x_size,int y_size) {
glViewport(0,0,x_size,y_size);glLoadIdentity();gluLookAt(...);
}...int main(int argc,char *argv[]) {
glutInit(&argc,argv);glutCreateWindow(“Ello!”);glutMouseFunc(...);...
}
Frame display is (optionally) synchronized across the cluster
![Page 19: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/19.jpg)
19
MPIglut Runtime Changes: Coords#include <GL/mpiglut.h>void display(void) {
glBegin(GL_TRIANGLES); ... glEnd();glutSwapBuffers();
}void reshape(int x_size,int y_size) {
glViewport(0,0,x_size,y_size);glLoadIdentity();gluLookAt(...);
}...int main(int argc,char *argv[]) {
glutInit(&argc,argv);glutCreateWindow(“Ello!”);glutMouseFunc(...);...
}
User code works only in global coordinates, but MPIglut adjusts OpenGL's projection matrix to render only the local screen
![Page 20: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/20.jpg)
20
MPIglut Runtime Non-Changes#include <GL/mpiglut.h>void display(void) {
glBegin(GL_TRIANGLES); ... glEnd();glutSwapBuffers();
}void reshape(int x_size,int y_size) {
glViewport(0,0,x_size,y_size);glLoadIdentity();gluLookAt(...);
}...int main(int argc,char *argv[]) {
glutInit(&argc,argv);glutCreateWindow(“Ello!”);glutMouseFunc(...);...
}
MPIglut does NOT intercept or interfere with rendering calls, so programmable shaders, vertex buffer objects, framebuffer objects, etc all run at full performance
![Page 21: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/21.jpg)
21
MPIglut Assumptions/Limitations
●Each backend app must be able to render its part of its screen
Does not automatically imply a replicated database, if application uses matrix-based view culling
●Backend GUI events (redraws, window changes) are collective
All backends must stay in synch Automatic for applications that are
deterministic function of events•Non-synchronized: files, network, time
![Page 22: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/22.jpg)
22
MPIglut: Bottom Line●Tiny source code change●Parallelism hidden inside MPIglut
Application still “feels” sequential!●Fairly major runtime changes
Multiple synchronized backends running in parallel
User input events communicated across network
OpenGL rendering coordinate system adjusted per-backend
But rendering calls are left alone
![Page 23: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/23.jpg)
23
Delivered Application Performance
![Page 24: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/24.jpg)
24
Performance Testing●MPIglut programs perform about the same on 20 screens as they do on 1 screen●We compared performance against two other packages for running unmodified OpenGL apps:
DMX: OpenGL GLX protocol interception and replication (MPIglut gets screen sizes via DMX)
Chromium: libgl OpenGL rendering call interception and routing
![Page 25: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/25.jpg)
25
Benchmark Applications
soar
UAF CS Bioinformatics Powerwall
Switched Gigabit Ethernet Interconnect
10 Dual-Core 2GB Linux Machines:
7 nVidia QuadroFX 3450
3 nVidia QuadroFX 1400
![Page 26: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/26.jpg)
26
MPIglut Performance
![Page 27: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/27.jpg)
27
Chromium Tilesort Performance
![Page 28: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/28.jpg)
28
Chromium Tilesort Performance
Gigabit Ethernet Network Saturated!
![Page 29: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/29.jpg)
29
DMX Performance
![Page 30: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/30.jpg)
30
Conclusion & Future Work●MPIglut: an easy route to high-performance parallel rendering●Hiding parallelism inside a library is a broadly-applicable technique
THREADirectX? OpenMPQt?●Still much work to do:
Multicore / multi-GPU support Need better GPGPU support (tiles,
ghost edges, load balancing) Need load balancing, possibly by
moving inter-processor boundaries
![Page 31: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/31.jpg)
31
Backup Slides
![Page 32: 1 MPIglut: Powerwall Programming made Easier Dr. Orion Sky Lawlor U. Alaska Fairbanks WSCG '08, 2008-02-05](https://reader036.vdocument.in/reader036/viewer/2022081521/5a4d1b097f8b9ab05998961e/html5/thumbnails/32.jpg)
32
What is a “Powerwall”?●Powerwalls are often driven by a small parallel cluster
Distributed-memory parallel machines
Software must run over slow commodity network, often gigabit ethernet
●Porting existing software to powerwalls is a big problem!
What is a “Powerwall”?