Managing HPC Software Complexity With

Total Page:16

File Type:pdf, Size:1020Kb

Managing HPC Software Complexity With Managing HPC Software Complexity with Spack Supercomputing 2019 Full-day Tutorial November 18, 2018 The most recent version of these slides can be found at: https://spack-tutorial.readthedocs.io Dallas, Texas LLNL-PRES-806064 This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under contract DE-AC52-07NA27344. spack.io Lawrence Livermore National Security, LLC Tutorial Materials Download the latest version of slides and handouts at: spack-tutorial.readthedocs.io For more: § Spack website: spack.io § Spack GitHub repository: github.com/spack/spack § Spack Reference Documentation: spack.readthedocs.io 2 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Tutorial Presenters Todd Gamblin, Greg Becker, Peter Scheibel Mario Melara Adam Stewart Massimiliano LLNL NERSC UIUC Culpo Sylabs, Inc. 3 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Software complexity in HPC is growing glm suite-sparse yaml-cpp metis cmake ncurses parmetis pkgconf nalu hwloc libxml2 xz bzip2 openssl boost trilinos superlu openblas netlib-scalapack mumps openmpi zlib netcdf hdf5 matio m4 libsigsegv parallel-netcdf Nalu: Generalized Unstructured Massively Parallel Low Mach Flow 4 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Software complexity in HPC is growing adol-c automake autoconf perl glm suite-sparse yaml-cpp metis cmake ncurses gmp libtool parmetis pkgconf m4 libsigsegv nalu hwloc libxml2 xz bzip2 openssl p4est pkgconf boost hwloc libxml2 trilinos superlu openblas xz netlib-scalapack netcdf-cxx netcdf mumps openmpi zlib netcdf hdf5 nanoflann matio m4 libsigsegv parallel-netcdf matio hdf5 Nalu: Generalized Unstructured Massively Parallel Low Mach Flow sundials glm netlib-scalapack mumps openmpi trilinos hypre openblas gdbm superlu-dist parmetis sqlite readline zlib petsc python dealii slepc ncurses arpack-ng openssl metis cmake gmsh oce suite-sparse tetgen intel-tbb netgen bzip2 assimp boost gsl muparser dealii: C++ Finite Element Library 5 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Software complexity in HPC is growing r-randomforest glm suite-sparse yaml-cpp r-labeling metis cmake ncurses parmetis pkgconf nalu r-lazyeval r-munsell hwloc libxml2 xz r-colorspace bzip2 openssl r-rcolorbrewer boost r-viridislite trilinos superlu openblas r-dichromat netlib-scalapack r-scales mumps r-tibble r-assertthat openmpi zlib netcdf hdf5 r-rlang r-gtable matio m4 libsigsegv parallel-netcdf r-ggplot2 r-plyr r-reshape2 r-rcpp r-modelmetrics Nalu: Generalized Unstructured Massively Parallel Low Mach Flow freetype bzip2 gperf r-r6 r-minqa fontconfig r-caret r-nloptr r-digest cairo libxml2 r-rcppeigen pixman r-lme4 harfbuzz libpng r-praise r-testthat pango adol-c automake sed xz gobject-introspection autoconf perl glib gettext r-mgcv r-crayon tar gmp libtool m4 libsigsegv libffi r-nlme p4est pkgconf libtiff hwloc libxml2 r-pbkrtest help2man xz r-mass zlib r-car r-foreach r-iterators flex netcdf-cxx netcdf r-sparsem curl r python ncurses nanoflann pkgconf openssl readline matio r-quantreg r-matrixmodels pcre hdf5 jdk libjpeg-turbo r-matrix cmake sundials r-lattice icu4c sqlite font-util r-adabag r-glmnet glm tk tcl nasm libxau gdbm xproto netlib-scalapack r-cubist r-mlbench libxdmcp openmpi xextproto mumps r-magrittr perl libpthread-stubs trilinos xtrans r-data-table libxcb util-macros hypre r-stringr xcb-proto r-xgboost libx11 inputproto r-rminer r-e1071 r-class r-codetools openblas kbproto gdbm bison r-kknn r-igraph r-irlba r-stringi r-rpart automake superlu-dist parmetis sqlite autoconf readline r-nnet zlib r-pkgconfig petsc gmp libtool m4 libsigsegv python dealii slepc ncurses arpack-ng openssl r-mda cmake metis r-kernlab gmsh oce suite-sparse r-strucchange r-zoo tetgen r-sandwich intel-tbb r-party netgen r-survival bzip2 r-multcomp r-th-data assimp r-plotrix boost r-coin r-mvtnorm r-modeltools gsl r-pls muparser dealii: C++ Finite Element Library R Miner: R Data Mining Library 6 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io What is the “production” environment for HPC? § Someone’s home directory? § LLNL? LANL? Sandia? ANL? LBL? TACC? — Environments at large-scale sites are very different. § Which MPI implementation? § Which compiler? § Which dependencies? § Which versions of dependencies? — Many applications require specific dependency versions. Real answer: there isn’t a single production environment or a standard way to build. Reusing someone else’s software is HARD. 7 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io The complexity of the exascale ecosystem threatens productivity. 5+ target architectures/platforms 15+ applications X 80+ software packages X Xeon Power KNL NVIDIA ARM Laptops? Up to 7 compilers 10+ Programming Models 2-3 versions of each package X Intel GCC Clang XL X OpenMPI MPICH MVAPICH OpenMP CUDA X PGI Cray NAG OpenACC Dharma Legion RAJA Kokkos + external dependencies = up to 1,260,000 combinations! § Every application has its own stack of dependencies. § Developers, users, and facilities dedicate (many) FTEs to building & porting. § Often trade reuse and usability for performance. We must make it easier to rely on others’ software! 8 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io What about containers? § Containers provide a great way to reproduce and distribute an already-built software stack § Someone needs to build the container! — This isn’t trivial — Containerized applications still have hundreds of dependencies § Using the OS package manager inside a container is insufficient — Most binaries are built unoptimized — Generic binaries, not optimized for specific architectures § HPC containers may need to be rebuilt to support many different hosts, anyway. — Not clear that we can ever build one container for all facilities — Containers likely won’t solve the N-platforms problem in HPC We need something more flexible to build the containers 9 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Spack is a flexible package manager for HPC § How to install Spack: $ git clone https://github.com/spack/spack $ . spack/share/spack/setup-env.sh § How to install a package: $ spack install hdf5 § HDF5 and its dependencies are installed within the Spack directory. § Unlike typical package managers, Spack can also install github.com/spack/spack many variants of the same build. — Different compilers — Different MPI implementations @spackpm — Different build options 10 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Who can use Spack? People who want to use or distribute software for HPC! 1. End Users of HPC Software — Install and run HPC applications and tools 2. HPC Application Teams — Manage third-party dependency libraries 3. Package Developers — People who want to package their own software for distribution 4. User support teams at HPC Centers — People who deploy software for users at large HPC sites 11 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Spack is used worldwide! Over 3,500 software packages Over 2,300 monthly active users (on docs site) Over 450 contributors from labs, academia, industry Plot shows sessions on spack.readthedocs.io for one month 12 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Spack has been gaining adoption rapidly (if stars are an indicator) Stars over time Stars per day (same data, 60-day window) 13 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Users on our documentation site have also been increasing 14 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Spack is being used on many of the top HPC systems § Official deployment tool for the U.S. Exascale Computing Project § 7 of the top 10 supercomputers § High Energy Physics community — Fermilab, CERN, collaborators § Astra (Sandia) Fugaku coming to RIKEN in 2021 DOE/MEXT collaboration § Fugaku (Japanese National Supercomputer Project) Summit (ORNL), Sierra (LLNL) SuperMUC-NG (LRZ, Germany) Edison, Cori, Perlmutter (NERSC) 15 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Contributions to Spack continue to grow! § In November 2015, LLNL provided most of the contributions to Spack § Since then, we’ve gone from 300 to over 3,500 packages § Most packages are from external contributors! § Many contributions in core, as well. § We are committed to sustaining Spack’s open source ecosystem! 16 LLNL-PRES-806064 Follow along at spack-tutorial.readthedocs.io spack.io Spack v0.13.1 is the latest release § Major new features: 1. Chaining: use dependencies from external "upstream" Spack instances 2. Views for Spack environments (covered today) 3. Spack detects and builds specifically for your microarchitecture (not shown in tutorial) • named, understandable targets like skylake, broadwell, power9, zen2 4. Spack stacks: combinatorial environments for facility deployment (covered today) 5. Projections: ability to build easily navigable symlink trees environments (covered today) 6. Support no-source packages (BundlePackage) to aggregate related packages 7. Extensions: users can write custom commands that live outside of Spack repo 8. ARM + Fujitsu compiler support 9. GitLab Build Pipelines: Spack can generate a pipeline from a stack (covered in slides) § Over 3,500 packages (~700 added since last year) § Full release notes: https://github.com/spack/spack/releases/tag/v0.13.0 17 LLNL-PRES-806064
Recommended publications
  • Setting up Opengl, GLM, and FLTK
    Comp 175 - Graphics In Class Lab 0 Setting Up OpenGL, GLM, and FLTK Description: In this lab, your task is to set up your development environment for future labs and assignments that use OpenGL, the GLM library, and FLTK. OpenGL is the standard (3D) graphics library. Although there are other graphics libraries out there (e.g. Vulcan, DirectX or Direct3D by Microsoft, Metal by Apple, and Mantle by AMD), OpenGL remains the most common and most popular API for implementing 3D graphics applications. For convenience, we will be using the GLM library (GLM stands for OpenGL Mathematics) to do all of our linear algebra. The library will help keep the code readable when manipulating matrices, vectors, points, and such. Finally, we will be using FLTK (version 1.3.4) in conjunction with OpenGL. FLTK is a cross-platform, lightweight graphical user interface (GUI) library that supports OpenGL canvas. Since FLTK is cross-platform, you should be able to use your own favorite operating system and windows environment. What a cross-platform toolkit means is that you will write your GUI code once, and you can compile the code in Windows, Mac, and whatever operating system that FLTK supports. The resulting compiled program will be native to the operating system (whereas Java is also a cross-platform language, but Java applications are run in a virtual machine). Personally, I use a Windows machine at home and at work. I have therefore written the initial support code and demo applications in Windows (using Visual Studio 2017 Enterprise edition). For this class, we will support Windows and Mac development environments.
    [Show full text]
  • FLTK 1.1.8 Programming Manual Revision 8
    FLTK 1.1.8 Programming Manual Revision 8 Written by Michael Sweet, Craig P. Earls, Matthias Melcher, and Bill Spitzak Copyright 1998-2006 by Bill Spitzak and Others. FLTK 1.1.8 Programming Manual Table of Contents Preface..................................................................................................................................................................1 Organization.............................................................................................................................................1 Conventions.............................................................................................................................................2 Abbreviations...........................................................................................................................................2 Copyrights and Trademarks.....................................................................................................................2 1 - Introduction to FLTK...................................................................................................................................3 History of FLTK......................................................................................................................................3 Features....................................................................................................................................................4 Licensing..................................................................................................................................................5
    [Show full text]
  • Audio Video Graphics Working Group Session
    Audio Video Graphics Working Group Session San Jose meeting Pieter van de Meulen WG chair 26 January, 2005 CE Linux Forum Technical Conference 1 AVG WG – todays objective: Audio Video 2D 3D Renesas, Mitsubishi, Conexant DirectFB Philips, Samsung UH API P hilips Multi-FB …. OpenGL …. …. …. 26 January, 2005 CE Linux Forum Technical Conference 2 Recall: 25th/26th Presentations • DirectFB - Dennis Oliver Kropp; Convergence ● http://www.directfb.org/ • OpenGL ES, OpenVG and OpenMAX - Ed Plowman; ARM ● http://www.khronos.org/ • Graphics APIS for Linux - Matsubara, Hagiwara, Hisao Munakata; Renesas • Creating GTK+ based UI's for embedded devices - Markku Ursin, Movial ● http://www.gtk.org/ • Linux DVB - Michael Hunold; Convergence ● http://www.linuxtv.org/ • UHAPI (AV streaming) tutorial - John Vugts; Philips/Samsung ● http://www.uhapi.org/ 26 January, 2005 CE Linux Forum Technical Conference 3 Recall: Jan. 25th Demos • FB (Multi-framebuffer) ● Philips: PNX8550 running Linux; dual framebuffer and AV accel. • DirectFB ● Conexant: DVD processor running CELF Linux with DirectFB. ● Mitsubishi: ARIB plane model emulated on DirectFB window system ● Mitsubishi: MPEG4 Player (via GTK+) running on Renesas SH-4 ● Renesas: GTK+ and GUI without X11 • UHAPI (AV streaming): ● Philips open source demo on PC • DTV ● Toshiba America/Europe: DTV reference solution and Home Gateway. • 3D graphics ●Renesas: demo by SI-Electronics on SH-4 and Power VR ●Pioneer: OpenGL 26 January, 2005 CE Linux Forum Technical Conference 4 Linux APIs (2004/6 status) & CCEELLFF VV11..00
    [Show full text]
  • Linux, Yocto and Fpgas
    Embedded Open Source Experts Linux, Yocto and FPGAs Integrating Linux and Yocto builds into different SoCs From a Linux software perspective: ➤ Increased demand for Linux on FPGAs ➤ Many things to mange, both technical and practical ➤ FPGAs with integrated CPU cores – very similar many other SoCs Here are some experiences and observations... © Codiax 2019 ● Page 2 Why use Linux? ➤ De-facto standard ➤ Huge HW support ➤ FOSS ➤ Flexible ➤ Adaptable ➤ Stable ➤ Scalable ➤ Royalty free ➤ Vendor independent ➤ Large community ➤ Long lifetime Why not Linux? ➤ Too big ➤ Real-time requirements ➤ Certification ➤ Boot time ➤ Licensing ➤ Too open? Desktop Shells: Desktop Display server: Display BrailleDisplay Touch-Screen Mouse & Keyboard Wayland Compositor Wayland + development tools = a lot code!of source Linux system example weston, clayton,mutter,KWin evdev libinput GNOME Shell D radeon nouveau lima etna_viv freedreno tegra-re lima nouveau radeon freedreno etna_viv e libwayland-server libwayland-server s Cinnamon k t o kms p Linux kernel, Linux kernel, Plasma 2 w i (Kernel Mode Setting) Mode (Kernel d g Cairo-Dock e t s drm (Direct Rendering Manager) Rendering (Direct drm cache coherent L2-Caches L2-Caches cache coherent CPU &GPU Enlight. DR19 System libraries: System oflibraries): form (in the Toolkits Interface User µClibc Pango glibc glibc main memory possibly adaptations to Wayland/Mir libwayland / COGL libwayland Cairo Cairo (Xr) GTK+ Clutter 2D Application 2D GModule GThread GThread GLib GObject Glib GIO ATK devicedrivers other& modules System
    [Show full text]
  • Spack a flexible Package Manager for HPC
    Spack A flexible package manager for HPC Overview & Introduc0on to Basic Spack Concepts Todd Gamblin Center for Applied Scien0fic Compu0ng LLNL-PRES-806064 This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory github.com/LLNL/spack under contract DE-AC52-07NA27344. Lawrence Livermore National Security, LLC Spack is a flexible package manager for HPC § How to install Spack: $ git clone https://github.com/scalability-llnl/spack.git § How to install a package: $ cd spack/bin $ ./spack install hdf5 § HDF5 and its dependencies are installed Get Spack! within the Spack directory. hp://github.com/LLNL/spack § No addi0onal setup required! 2 LLNL-PRES-806064 github.com/LLNL/spack What is the proDucon environment for HPC? § Someone’s home directory? § LLNL? LANL? Sandia? ANL? LBL? TACC? — Environments at large-scale sites are very different. § Which MPI implementaon? § Which compiler? § Which dependencies? § Which versions of dependencies? — Many applicaons require specific dependency versions. Real answer: there isn’t a single production environment or a standard way to build. 3 LLNL-PRES-806064 github.com/LLNL/spack HPC soware is becoming increasingly complex § Not much standardizaon in HPC — every machine/applicaon has a different so[ware stack § Sites share unique hardware among teams with very different requirements — Users want to experiment with many exo0c architectures, compilers, MPI versions — All of this is necessary to get the best performance § Example environment for some LLNL codes: 48 third party packages x 3 MPI versions x 3-ish Platforms mvapich mvapich2 OpenMPI Linux BlueGene Cray Up to 7 compilers Oh, and 2-3 versions of x Intel GCC XLC Clang x each package = ~7,500 combinations PGI Cray Pathscale We want an easy way to quickly sample the space, to build configurations on demand! 4 LLNL-PRES-806064 github.com/LLNL/spack Most exisEng tools Do not support combinatorial versioning § Tradi0onal binary package managers — RPM, yum, APT, yast, etc.
    [Show full text]
  • Programming.Pdf
    Programming CS422 1 FLTK: Fast Light Toolkit • http://www.fltk.org • FLTK is a cross-platform C++ GUI toolkit for UNIX®/ Linux® (X11), Microsoft® Windows®, and MacOS® X • FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation. • FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. • FLTK also includes an UI builder called FLUID that can be used to create applications 2 FLTK 3 Program #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Box.H> CXXFLAGS=`fltk-config --cxxflags` LDLIBS=`fltk-config --ldflags` int main(int argc, char **argv) { Fl_Window *window = new Fl_Window(300,180); Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!"); box->box(FL_UP_BOX); box->labelsize(36); box->labelfont(FL_BOLD+FL_ITALIC); box->labeltype(FL_SHADOW_LABEL); window->end(); window->show(argc, argv); return Fl::run(); } 4 Swing • Java language • JFC is short for Java Foundation Classes, which encompass a group of features for building graphical user interfaces (GUIs) and adding rich graphics functionality and interactivity to Java applications. It is defined as containing the features shown in the table below • Swing GUI, Look-and-Feel, Accessibility API, Java 2D API, Drag-and-Drop Support, Internationalization, ... 5 Swing import javax.swing.*; public class HelloWorldSwing { private static void createAndShowGUI() { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window. Run: JFrame frame = new JFrame("HelloWorldSwing"); javac SwingApplication.java java SwingApplication frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Add the ubiquitous "Hello World" label.
    [Show full text]
  • FLTK 1.1.10 Programming Manual Revision 10
    FLTK 1.1.10 Programming Manual Revision 10 Written by Michael Sweet, Craig P. Earls, Matthias Melcher, and Bill Spitzak Copyright 1998-2009 by Bill Spitzak and Others. FLTK 1.1.10 Programming Manual Table of Contents Preface..................................................................................................................................................................1 Organization.............................................................................................................................................1 Conventions.............................................................................................................................................2 Abbreviations...........................................................................................................................................2 Copyrights and Trademarks.....................................................................................................................2 1 - Introduction to FLTK...................................................................................................................................3 History of FLTK......................................................................................................................................3 Features....................................................................................................................................................4 Licensing..................................................................................................................................................5
    [Show full text]
  • Introduction to the Tcl/Fltk Extension
    The Fast Light Toolkit Extension for Tcl/Tk Version 1.0.1 Iain B. Findleton Tue Nov 18 12:35:33 EST 2008 This document describes the binding between the Fast Light Tool Kit (FLTK) and the Tcl/Tk programming language. The language binding enables the creation of graphical user interface based applications that are built using the widget set provided by the FLTK library. Both the FLTK library and the Tcl/Tk application development language are distributed under various flavours of the GNU Public License. The Fltk Extension for Tcl/Tk is a dynamically loadable extension to the Tcl/Tk application development environment. The extension is distributed freely under the license terms described in the software distribution. All of the materials of the Fltk extension package for Tcl/Tk, including this documentation, are Copyright (C) I.B.Findleton, 2001-2007, All Rights Reserved. Neither this document nor any part thereof may be reproduced and distributed for any commercial purpose without the express written permission of the author. Reproduction and distribution for non-commercial purposes is allowed. 11/18/2008 Table of Contents 1 Introduction.....................................................................................................................................................1 1.1 Features of the FLTK Tool Kit..........................................................................................................1 1.2 Limitations of the FLTK Tool Kit.....................................................................................................1
    [Show full text]
  • Panorama of GUI Toolkits on Haiku
    Panorama of GUI toolkits on Haiku From ncurses to Qt5 François Revol [email protected] Haiku ● Free Software rewrite of BeOS ● An Operating System for the desktop ● A lot of POSIX – But we don't claim to be Unix® ● Some more funny things – Typed & indexable xattrs Native GUI ● InterfaceKit – C++ API (similar to Qt) – BMessage objects ● Multithreaded – 1 message loop / window + 1 app main thread ● Few bindings – yab (yabasic port) Toolkit Pros/Cons ✔ More apps, less work ✗ Never completely ✔ More potential users native ✔ More devs? ✗ No Scripting support ✗ hey Foo get Frame ✔ It can be done right of View … ✗ Screen reader… ✗ Less incentive for native apps Toolkit usage in Debian GNU/Linux ● for t in $(debtags cat | tr ' ,' '\n\n' | grep uitoolkit:: | sort | uniq); do echo -en "$t\t"; debtags search $t | wc -l; ● done Whatever TODO uitoolkit::athena 92 means uitoolkit::fltk 25 uitoolkit::glut 23 ● uitoolkit::gnustep 41 Probably not the best uitoolkit::gtk 2024 metric anyway uitoolkit::motif 53 uitoolkit::ncurses 757 uitoolkit::qt 965 uitoolkit::sdl 488 uitoolkit::tk 135 uitoolkit::TODO 52 uitoolkit::wxwidgets 117 uitoolkit::xlib 254 ncurses █████ ● So what, it's a toolkit � ● Works not too bad hdialog ████▒ ● Native implementation of [x]dialog ● Some missing features ● Shanty is a similar app (Zenity clone) SDL 1.2 █████ ● Of course! SDL 2 █████ ● What Else?™ nativefiledialog █████ ● Native file selectors for Win32, GTK+3, OSX ● Ported during GCI 2014 ● For use with SDL/SDL2/… LibreOffice (VCL) █▒▒▒▒ ● Visual Class Libraries ● LibreOffice / OpenOffice's own GUI toolkit – Is it used anywhere else? IUP █▒▒▒▒ ● Multi-platform GUI toolkit – GTK+, Motif and Windows – “Bindings for C, Lua and LED – Uses native interface elements – Simplicity of its API” ● WIP port by Adrien Destugues (PulkoMandy) wxWidget ▒▒▒▒▒ ● Is this still in use? ● Oh, I need it for KiCAD! ● Port started long ago, nothing usable yet.
    [Show full text]
  • Doing 3D with Tcl
    5th European Tcl/Tk User Meeting May 2005 Doing 3D with Tcl Paul Obermeier [email protected] Abstract This paper presents an approach called tclogl, which offers the 3D functionality of OpenGL at the Tcl scripting level. Tclogl is an improved and enhanced OpenGL binding based on the work done with Frustum by Roger E Critchlow. The paper starts with an overview of existing 3D libraries with a Tcl sripting interface. Different solution approaches are discussed and compared against the given requirements. The choosen implementation, which relies heavily on SWIG, is explained in detail in the main section of this paper. Common pitfalls when programming OpenGL in Tcl, as well as open issues of this approach are shown. Finally the results of a range of test programs and some demonstration applications are shown. 1 Overview Hardware accelerated 3D capabilities are available nowadays on nearly every PC. There is also a broad range of programming libraries for doing 3D visualization, coming from different application domains, like simulation, gaming, visualization or animation. These libraries differ in availability on computer architectures and operating systems, complexity and richness of supplied functionality, as well as the supported language bindings. There are two low-level (light-weight) graphic APIs in common use today: OpenGL and DirectX. While DirectX from Microsoft is available only on machines running the Windows operating system, OpenGL is running on PC's as well as on workstations. OpenGL also has a software-only implementation called "Mesa", so you can run OpenGL based programs even in virtual machines or over a network. OpenGL libraries are part of all major operating systems distributions.
    [Show full text]
  • FLTK 1.0.11 Programming Manual Revision 18
    FLTK 1.0.11 Programming Manual Revision 18 Written by Michael Sweet, Craig P. Earls, and Bill Spitzak Copyright 1998−2001 by Bill Spitzak and Others. FLTK 1.0.11 Programming Manual Table of Contents Preface..................................................................................................................................................................1 Organization.............................................................................................................................................1 Conventions.............................................................................................................................................2 Abbreviations...........................................................................................................................................2 Copyrights and Trademarks.....................................................................................................................2 1 − Introduction to FLTK..................................................................................................................................3 History of FLTK......................................................................................................................................3 Features....................................................................................................................................................4 Licensing..................................................................................................................................................5
    [Show full text]
  • Project 1: Impressionist Help Session What We’Ll Be Going Over
    Project 1: Impressionist Help Session What we’ll be going over: SVN: How to use it. The Skeleton Code: Live and Uncut! What on earth is OpenGL (and why doesn’t it work)? Basic FLTK Hint #1: How to make a new brush. Committing the changes you made. Hint #2+: Filter kernel dos and don'ts Basic Photoshop (artifacts, plus check your work!) Good References for Project 1 How to set up MSVC .NET from home (or, the other labs) Q&A SVN: The Basics Set up space… done for you! Import the code… also done for you! Check out a local copy Right-click on SVN Checkout, enter the proper repository and module and BAM! You’re done! Make some changes (we’ll see this later on in the session) Add any new files (we’ll see this later on in the session) Commit your code (also will be seen later on in the session) The Skeleton Code The Skeleton Code cont’d ImpressionistDoc This class handles all of the document-related stuff, like loading/saving, etc. ImpressionistUI This class handles all of the UI stuff, such as getting values from sliders, setting up the window, etc. PaintView This class handles drawing the side of the window the user paints on. A lot of event handling is done here (so here look for examples). OriginalView This class handles the other side of the window. ImpBrush This is the virtual class all brushes are derived from. PointBrush This is an example brush that draws points. Meet your new friend (or enemy): OpenGL OpenGL is a great environment for PC 2d/3d graphics applications.
    [Show full text]