Transcript
Page 1: Kitware: Qt and Scientific Computing

Kitware Scientific Computing with Qt Bill Hoffman [email protected] 11/16/2009

Page 2: Kitware: Qt and Scientific Computing

Overview

• Kitware

– History and Business Model

• Qt at Kitware

– past, present and Future

• CMake/CTest/CDash

1

Page 3: Kitware: Qt and Scientific Computing

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

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

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

Supercomputing Visualization• Transform complex, large data into visual representations

that are easier to understand and interact with

Page 7: Kitware: Qt and Scientific Computing

Supercomputing Visualization (2)

• Informatics

Page 8: Kitware: Qt and Scientific Computing

Supercomputing 3D Interaction Widgets

Page 9: Kitware: Qt and Scientific Computing

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

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

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

Computer Vision

• Extract information from images or video streams

Page 13: Kitware: Qt and Scientific Computing

VTK

Page 14: Kitware: Qt and Scientific Computing

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

• 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

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

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

Slider - image-to-image registration app

17

Page 19: Kitware: Qt and Scientific Computing

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

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
Page 22: Kitware: Qt and Scientific Computing

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

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

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

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

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

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

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

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

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

Automatic Testing Benefits

“Automated Software Testing,”1999, Dustin, et al, Addison Wesley

Page 32: Kitware: Qt and Scientific Computing

CDash Dashboard www.cdash.org

Page 33: Kitware: Qt and Scientific Computing

Coverage Display GCov/Bullseye

Page 34: Kitware: Qt and Scientific Computing

Video of ParaView Nightly Testing

33

Page 35: Kitware: Qt and Scientific Computing

Valgrind / Purify

Page 36: Kitware: Qt and Scientific Computing

Kitware Hosted CDash http://my.cdash.org

Page 37: Kitware: Qt and Scientific Computing

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

Thank you


Recommended