kitware: qt and scientific computing
DESCRIPTION
Kitware is involved with Qt in two main areas. First, Kitware is the provider of the CMake (www.cmake.org) build tool which is used to build KDE, the flagship open source Qt project. In addition, Kitware has been using Qt for the ParaView (www.paraview.org) project. ParaView is an open-source, multi-platform data analysis and visualization application. With the recent change in Qt licensing Kitware is also starting to use Qt for many other open source scientific and medical projects. For cross platform C++ GUI development Qt now stands alone as really the only viable choice. This talk will cover the CMake build system, and the impact Qt and Qt derived projects are having on state of the art scientific computation. Presentation by BIll Hoffman held during Qt Developer Days 2009. http://qt.nokia.com/developer/learning/elearningTRANSCRIPT
![Page 1: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/1.jpg)
Kitware Scientific Computing with Qt Bill Hoffman [email protected] 11/16/2009
![Page 2: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/2.jpg)
Overview
• Kitware
– History and Business Model
• Qt at Kitware
– past, present and Future
• CMake/CTest/CDash
1
![Page 3: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/3.jpg)
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
![Page 4: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/4.jpg)
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
![Page 5: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/5.jpg)
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
![Page 6: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/6.jpg)
Supercomputing Visualization• Transform complex, large data into visual representations
that are easier to understand and interact with
![Page 7: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/7.jpg)
Supercomputing Visualization (2)
• Informatics
![Page 8: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/8.jpg)
Supercomputing 3D Interaction Widgets
![Page 9: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/9.jpg)
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
![Page 10: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/10.jpg)
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
![Page 11: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/11.jpg)
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)
![Page 12: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/12.jpg)
Computer Vision
• Extract information from images or video streams
![Page 13: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/13.jpg)
VTK
![Page 14: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/14.jpg)
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
![Page 15: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/15.jpg)
• 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
![Page 16: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/16.jpg)
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
![Page 17: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/17.jpg)
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
![Page 18: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/18.jpg)
Slider - image-to-image registration app
17
![Page 19: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/19.jpg)
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.
![Page 20: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/20.jpg)
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
![Page 21: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/21.jpg)
![Page 22: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/22.jpg)
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: [email protected]
![Page 23: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/23.jpg)
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
![Page 24: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/24.jpg)
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. “
![Page 25: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/25.jpg)
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!
![Page 26: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/26.jpg)
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
![Page 27: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/27.jpg)
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
![Page 28: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/28.jpg)
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
![Page 29: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/29.jpg)
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
![Page 30: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/30.jpg)
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
![Page 31: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/31.jpg)
Automatic Testing Benefits
“Automated Software Testing,”1999, Dustin, et al, Addison Wesley
![Page 32: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/32.jpg)
CDash Dashboard www.cdash.org
![Page 33: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/33.jpg)
Coverage Display GCov/Bullseye
![Page 34: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/34.jpg)
Video of ParaView Nightly Testing
33
![Page 35: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/35.jpg)
Valgrind / Purify
![Page 36: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/36.jpg)
Kitware Hosted CDash http://my.cdash.org
![Page 37: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/37.jpg)
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
![Page 38: Kitware: Qt and Scientific Computing](https://reader034.vdocument.in/reader034/viewer/2022042506/5551d87cb4c90501638b45cc/html5/thumbnails/38.jpg)
Thank you