kitware: qt and scientific computing
Post on 12-May-2015
3.693 Views
Preview:
DESCRIPTION
TRANSCRIPT
Kitware Scientific Computing with Qt Bill Hoffman bill.hoffman@kitware.com 11/16/2009
Overview
• Kitware
– History and Business Model
• Qt at Kitware
– past, present and Future
• CMake/CTest/CDash
1
Kitware: the Company
•• Founded in 1998Founded in 1998
•• Founders: 5 previous employees of GE Corporate ResearchFounders: 5 previous employees of GE Corporate Research
•• Privately held, profitable from creation, no debtPrivately held, profitable from creation, no debt
–– Revenues projected at $9 million in 2009Revenues projected at $9 million in 2009
•• ~$14 million if subcontractors included~$14 million if subcontractors included
–– Principally consulting/grants, with support product revenuePrincipally consulting/grants, with support product revenue
•• Approximately 65 employees; growing rapidly (30% in 2009)Approximately 65 employees; growing rapidly (30% in 2009)
–– > 25 PhD> 25 PhD
Business Model
• Open source software
– Services and support
– Consulting
– Collaborative R&D
• Commercial products
– Value-added products
– Applications built on high quality, open source base
– Custom (proprietary) software frameworks
Kitware: Core Technologies
SoftwareProcess
SupercomputingVisualization
MedicalImaging
ComputerVision
Open-SourceToolkits
• Registration• Segmentation• Image Processing• Measurement• Responsive GUI
• Large data• Parallel computing• Client / Server• Web / grid architectures• Human/Computer
Interaction
Expertise in:• Behavior/event recognition• Detection and tracking• Segmentation• Change Detection
• Insight ToolKit (ITK)• VisualizationToolkit (VTK)• CMake• ParaView• Publications and consulting
Supercomputing Visualization• Transform complex, large data into visual representations
that are easier to understand and interact with
Supercomputing Visualization (2)
• Informatics
Supercomputing 3D Interaction Widgets
Supercomputing Visualization
• Applicable software
– VTK (the Visualization Toolkit)
– ParaView (Parallel Visualization application)
– Overview (Information visualization application)
• Customers
– Any producer and/or consumer of large, complex data
Medical Imaging
• Process, analyze and visualize medical data
– Image processing- operate on images to extract
information
– Segmentation- identify features in an image
– Registration- align images
Medical Imaging• Applicable Software
– ITK (Insight Segmentation and Registration Toolkit)– IGSTK (Image Guided Surgery Toolkit)– VolView (volume rendering application)– Maverick (medical image analysis
application framework)
• Customers– Medical research– Pharma– Orthopedics– Medical device manufactures utilizing images– Pre-clinical– Biological applications (image based)
Computer Vision
• Extract information from images or video streams
VTK
National Library of MedicineSegmentation and Registration Toolkit
$13 million over 6 years$13 million over 6 yearsLeading edge algorithmsLeading edge algorithmsOpen Source SoftwareOpen Source Software
www.itk.orgwww.itk.org
• Parallel Visualization application• Turn-key wrapper around VTK• Supports parallel data processing and
rendering• Supports tiled displays, Caves, etc.• 3D widgets, LOD (level-of-detail) display• Extended by XML modules• Extensive animation support
ParaView
Kitware GUI History
• 1999 – 2009 C++ GUI Choices– tcl/TK– FLTK -> LGPL – Qt -> GPL – GTK– WxWidgets -> BSD (1992) – MFC (Only Windows)
• Requirements– Cross Platform, Open Source “commercializable“
• Kitware created KWWidgets on top of tcl/TK
Kitware Qt GPL projects
• ParaQ ParaView (converted from KWWidgets)
2005
– Pay to keep BSD license on ParaView/VTK
• Maverick DOD SBIR
• One commercial customer
16
Slider - image-to-image registration app
17
Qt LGPL Changes Everything!
• Scientists and Engineers can focus on the science and not on GUI widgets and license issues.
• Kitware plans to use and encourage the use of Qt for all of our projects now.
3D Slicer• Is a multi-platform, open source software for bio-medical
computing
• Initially implemented
using KWWidgets due to
GPL licensing concerns
• Utilizes open-source tools CMake, VTK, ITK
• $350K of funding for Qt port
– NAMIC National Alliance of Medical Image Computing (na-
mic.org)
– One of seven prestigiuos NIH National Roadmap Projects, a
National Center of Biomedical Computing(NCBC)
• Two year effort, effort is underway
• Cited reasons: Ease of use, cross-platform support,
available community resources, and productivity gains
21
CMake – Cross Platform Build System
• Why CMake?
• CMake Features
• Where to get help
– Mastering CMake Book
– Web Page: www.cmake.org
• http://www.cmake.org/Wiki/CMake
• mailing list: cmake@cmake.org
Why CMake? It’s easy, and works well
22
Typical Project without CMake (curl)$ ls CHANGES RELEASE-NOTES curl-config.in missingCMake acinclude.m4 curl-style.el mkinstalldirsCMakeLists.txt aclocal.m4 depcomp notesbuild docs notes~COPYING buildconf include packagesCVS buildconf.bat install-sh reconfChangeLog compile lib sample.emacsMakefile config.guess libcurl.pc.in srcMakefile.am config.sub ltmain.sh testsMakefile.in configure m4 vc6curl.dswREADME configure.ac maketgz
$ ls src/CMakeLists.txt Makefile.riscos curlsrc.dsp hugehelp.h version.hCVS Makefile.vc6 curlsrc.dsw macos writeenv.cMakefile.Watcom Makefile.vc8 curlutil.c main.c writeenv.hMakefile.am config-amigaos.h curlutil.h makefile.amiga writeout.cMakefile.b32 config-mac.h getpass.c makefile.dj writeout.hMakefile.in config-riscos.h getpass.h mkhelp.plMakefile.inc config-win32.h homedir.c setup.hMakefile.m32 config.h.in homedir.h urlglob.cMakefile.netware curl.rc hugehelp.c urlglob.h
• A build system
that just works
• A build system
that is easy to use
cross platform
Why CMake? It’s fast
http://blog.qgis.org/?q=node/16 : “I was quite surprised with
the speed of building Quantum GIS codebase in
comparison to Autotools. “
Why CMake? Everyone is using it
• 800+ downloads per day from www.cmake.org• Major Linux distributions and Cygwin provide CMake packages• KDE, Second Life, Boost (Expermentally), many others
KDE 2006 – Tipping Point!
What Is CMake?
• Family of Software Development Tools
– Build – CMake
– Test – CTest/CDash
– Package – CPack
• Open-Source License
• History
– Insight Segmentation & Registration Toolkit (~2000)
– Changed the way we build
How CMake Changes The Way We Build C++ • Boost aims to give C++ a set of useful libraries like Java,
Python, and C#
• CMake aims to give C++ compile portability like the
compile once and run everywhere of Java, Python, and
C#
– Same build tool and files for all platforms
– Easy to mix both large and small libraries
27
Who Is Involved?
Users• KDE• Second Life• ITK• VTK• ParaView• Trilinos• Scribus• Boost (Experimentaly)• Mysql• many more
Supporters
• Kitware• ARL• National Library of
Medicine• Sandia National Labs• Los Alamos National
Labs• NAMIC
CMake Features• One simple language for all platforms
– Windows, Mac, Linux, UNIX variants
– Embedded platforms via cross-compilation
• Generates native build systems
– Makefiles (GNU, NMake, Borland, etc.)
– KDevelop, Eclipse
– Visual Studio 6,7,8,9 IDE
– Xcode
• Out-of-source build trees leave source
clean
• Interactive configuration via GUI
• Multiple configurations (Debug, Release,
etc.)
• Built-in rules for common targets
– Executables
– Shared Libraries / DLLs
– Static Libraries (archives)
– OS X Frameworks and App Bundles
• Custom rules for other targets
– Generated Documentation
– Generated sources and headers
• Configuration rules
– System introspection
– Persistent variables (options,
cached results)
– Configured header files
CMake Features - continued• Automatic analysis
– Implicit dependencies (C, C++, Fortran)
– Transitive link dependencies
– Ordering of linker search path and RPATH
• Advanced Makefile generation
– Modular, Fast, Parallel
– Color and progress display
– Help targets – make help
– Preprocessor targets – make foo.i
– Assembly targets – make foo.s
Automatic Testing Benefits
“Automated Software Testing,”1999, Dustin, et al, Addison Wesley
CDash Dashboard www.cdash.org
Coverage Display GCov/Bullseye
Video of ParaView Nightly Testing
33
Valgrind / Purify
Kitware Hosted CDash http://my.cdash.org
CPack
• CPack is bundled with CMake
• Creates professional platform specific installers
– TGZ and Self extract TGZ (STGZ), NullSoft Scriptable Install
System (NSIS), OSX PackageMaker, RPM, Deb
Thank you
top related