SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Kitware Scientific Computing with Qt
                                        11/16/2009
Bill Hoffman bill.hoffman@kitware.com
Overview


• Kitware
   – History and Business Model

• Qt at Kitware
   – past, present and Future

• CMake/CTest/CDash




                                           1
Kitware: the Company

• Founded in 1998

• Founders: 5 previous employees of GE Corporate Research

• Privately held, profitable from creation, no debt
    – Revenues projected at $9 million in 2009
        • ~$14 million if subcontractors included

    – Principally consulting/grants, with support product revenue

• Approximately 65 employees; growing rapidly (30% in 2009)
    – > 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


  Supercomputing                                      Medical
   Visualization                                      Imaging
   •   Large data                                    •   Registration
   •   Parallel computing                            •   Segmentation
   •   Client / Server                               •   Image Processing
   •   Web / grid architectures
                                                     •   Measurement
   •   Human/Computer
                                                     •   Responsive GUI
       Interaction
                                     Software
                                     Process
   Open-Source                                            Computer
     Toolkits                                              Vision
   •   Insight ToolKit (ITK)                    Expertise in:
   •   VisualizationToolkit (VTK)               • Behavior/event recognition
   •   CMake                                    • Detection and tracking
   •   ParaView                                 • Segmentation
   •   Publications and consulting              • Change Detection
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 Medicine
                           Segmentation and Registration Toolkit



$13 million over 6 years
Leading edge algorithms
Open Source Software




  www.itk.org
ParaView
•   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
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
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



                                      21
Why CMake? It’s easy, and
works well
                        Typical Project without CMake (curl)
• A build system        $ ls
                        CHANGES               RELEASE-NOTES curl-config.in missing
                        CMake              acinclude.m4 curl-style.el mkinstalldirs
  that just works       CMakeLists.txt
                        build       docs
                                             aclocal.m4 depcomp
                                                notes~
                                                                           notes

                        COPYING              buildconf   include       packages
                        CVS              buildconf.bat install-sh    reconf
                        ChangeLog            compile     lib        sample.emacs
                        Makefile          config.guess libcurl.pc.in src
                        Makefile.am         config.sub ltmain.sh        tests
                        Makefile.in       configure     m4          vc6curl.dsw
                        README               configure.ac maketgz
• A build system        $ ls src/
                        CMakeLists.txt Makefile.riscos curlsrc.dsp hugehelp.h      version.h
                        CVS          Makefile.vc6    curlsrc.dsw macos        writeenv.c
  that is easy to use   Makefile.Watcom Makefile.vc8
                        Makefile.am
                                                           curlutil.c main.c     writeenv.h
                                        config-amigaos.h curlutil.h makefile.amiga writeout.c
                        Makefile.b32    config-mac.h    getpass.c makefile.dj writeout.h

  cross platform        Makefile.in
                        Makefile.inc
                                      config-riscos.h getpass.h mkhelp.pl
                                       config-win32.h homedir.c setup.h
                        Makefile.m32     config.h.in  homedir.h urlglob.c
                        Makefile.netware curl.rc      hugehelp.c urlglob.h




                                                                                                22
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
             KDE 2006 – Tipping Point!




 • 800+ downloads per day from www.cmake.org
 • Major Linux distributions and Cygwin provide CMake packages
 • KDE, Second Life, Boost (Expermentally), many others
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
Who Is Involved?
Users                       Supporters
•   KDE
                            • Kitware
•   Second Life
•   ITK                     • ARL
•   VTK                     • National Library of
•   ParaView
                              Medicine
•   Trilinos
•   Scribus                 • Sandia National Labs
•   Boost (Experimentaly)   • Los Alamos National
•   Mysql
                              Labs
•   many more
                            • NAMIC


                                                     27
CMake Features
•   One simple language for all platforms              •   Built-in rules for common targets
     –      Windows, Mac, Linux, UNIX variants
                                                            – Executables
     –      Embedded platforms via cross-compilation
                                                            – Shared Libraries / DLLs
•   Generates native build systems
                                                            – Static Libraries (archives)
     –      Makefiles (GNU, NMake, Borland, etc.)
                                                            – OS X Frameworks and App Bundles
     –      KDevelop, Eclipse

     –      Visual Studio 6,7,8,9 IDE                  •   Custom rules for other targets
     –      Xcode                                           – Generated Documentation

•   Out-of-source build trees leave source                  – Generated sources and headers
    clean                                              •   Configuration rules
•   Interactive configuration via GUI
                                                            – System introspection
•   Multiple configurations (Debug, Release,
                                                            – Persistent variables (options,
    etc.)
                                                               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

Weitere ähnliche Inhalte

Was ist angesagt?

Java Presentation
Java PresentationJava Presentation
Java PresentationAmr Salah
 
Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Martijn Verburg
 
Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)Martijn Verburg
 
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®Serdar Basegmez
 
Introduction to java by priti sajja
Introduction to java by priti sajjaIntroduction to java by priti sajja
Introduction to java by priti sajjaPriti Srinivas Sajja
 
Java Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.EasyJava Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.Easyroialdaag
 
Gnu linux for safety related systems
Gnu linux for safety related systemsGnu linux for safety related systems
Gnu linux for safety related systemsDTQ4
 
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)Martijn Verburg
 
Scrumbox ece2011.pptx
Scrumbox ece2011.pptxScrumbox ece2011.pptx
Scrumbox ece2011.pptxda152
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoFrank van der Linden
 
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...Bartosz Chrabski
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesCharlie Gracie
 
Demystifying IoT skills : What does it take to become a FullStack IoT engineer?
Demystifying IoT skills : What does it take to become a FullStack IoT engineer?Demystifying IoT skills : What does it take to become a FullStack IoT engineer?
Demystifying IoT skills : What does it take to become a FullStack IoT engineer?Emertxe Information Technologies Pvt Ltd
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2RatnaJava
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java Hitesh-Java
 
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Andreas Jakl
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutionsSangjin Lee
 

Was ist angesagt? (20)

Java Presentation
Java PresentationJava Presentation
Java Presentation
 
Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)
 
Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)
 
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
 
Introduction to java by priti sajja
Introduction to java by priti sajjaIntroduction to java by priti sajja
Introduction to java by priti sajja
 
Java Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.EasyJava Edge.2009.Grails.Web.Dev.Made.Easy
Java Edge.2009.Grails.Web.Dev.Made.Easy
 
Gnu linux for safety related systems
Gnu linux for safety related systemsGnu linux for safety related systems
Gnu linux for safety related systems
 
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
 
Scrumbox ece2011.pptx
Scrumbox ece2011.pptxScrumbox ece2011.pptx
Scrumbox ece2011.pptx
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on Domino
 
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
Program development tools
Program development toolsProgram development tools
Program development tools
 
Demystifying IoT skills : What does it take to become a FullStack IoT engineer?
Demystifying IoT skills : What does it take to become a FullStack IoT engineer?Demystifying IoT skills : What does it take to become a FullStack IoT engineer?
Demystifying IoT skills : What does it take to become a FullStack IoT engineer?
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
 
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
 
TOMOYO Linux on Android
TOMOYO Linux on AndroidTOMOYO Linux on Android
TOMOYO Linux on Android
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutions
 
Software development with qt
Software development with qtSoftware development with qt
Software development with qt
 

Ähnlich wie Kitware: Qt and Scientific Computing

CMake: Improving Software Quality and Process
CMake: Improving Software Quality and ProcessCMake: Improving Software Quality and Process
CMake: Improving Software Quality and ProcessMarcus Hanwell
 
Containers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen AppsContainers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen AppsKhalid Ahmed
 
Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectPatrick Chanezon
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryQAware GmbH
 
Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...Platonov Sergey
 
DNUG46 - Build your own private Cloud environment
DNUG46 - Build your own private Cloud environmentDNUG46 - Build your own private Cloud environment
DNUG46 - Build your own private Cloud environmentpanagenda
 
Build your own private Cloud environment
Build your own private Cloud environmentBuild your own private Cloud environment
Build your own private Cloud environmentNico Meisenzahl
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Markus Eisele
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Gilad Garon
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackAnimesh Singh
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific ComputingPeter Bryzgalov
 
Avogadro, Open Chemistry and Semantics
Avogadro, Open Chemistry and SemanticsAvogadro, Open Chemistry and Semantics
Avogadro, Open Chemistry and SemanticsMarcus Hanwell
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesLuke Marsden
 
Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!All Things Open
 
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...NETWAYS
 

Ähnlich wie Kitware: Qt and Scientific Computing (20)

Cmake kitware
Cmake kitwareCmake kitware
Cmake kitware
 
CMake: Improving Software Quality and Process
CMake: Improving Software Quality and ProcessCMake: Improving Software Quality and Process
CMake: Improving Software Quality and Process
 
Cont0519
Cont0519Cont0519
Cont0519
 
Containers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen AppsContainers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen Apps
 
Kubernetes @ meetic
Kubernetes @ meeticKubernetes @ meetic
Kubernetes @ meetic
 
Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby project
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
 
Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...
 
DNUG46 - Build your own private Cloud environment
DNUG46 - Build your own private Cloud environmentDNUG46 - Build your own private Cloud environment
DNUG46 - Build your own private Cloud environment
 
Build your own private Cloud environment
Build your own private Cloud environmentBuild your own private Cloud environment
Build your own private Cloud environment
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific Computing
 
Avogadro, Open Chemistry and Semantics
Avogadro, Open Chemistry and SemanticsAvogadro, Open Chemistry and Semantics
Avogadro, Open Chemistry and Semantics
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
 
Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!
 
my_resume(eng)
my_resume(eng)my_resume(eng)
my_resume(eng)
 
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...OSDC 2018 | Three years running containers with Kubernetes in Production by T...
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
 

Mehr von account inactive

KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phonesaccount inactive
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbianaccount inactive
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Applicationaccount inactive
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics Viewaccount inactive
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integrationaccount inactive
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systemsaccount inactive
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CEaccount inactive
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applicationsaccount inactive
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Frameworkaccount inactive
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbianaccount inactive
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Nativeaccount inactive
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsaccount inactive
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qtaccount inactive
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)account inactive
 

Mehr von account inactive (20)

Meet Qt
Meet QtMeet Qt
Meet Qt
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
 
Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbian
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIs
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Project
 

Kürzlich hochgeladen

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Kitware: Qt and Scientific Computing

  • 1. Kitware Scientific Computing with Qt 11/16/2009 Bill Hoffman bill.hoffman@kitware.com
  • 2. Overview • Kitware – History and Business Model • Qt at Kitware – past, present and Future • CMake/CTest/CDash 1
  • 3. Kitware: the Company • Founded in 1998 • Founders: 5 previous employees of GE Corporate Research • Privately held, profitable from creation, no debt – Revenues projected at $9 million in 2009 • ~$14 million if subcontractors included – Principally consulting/grants, with support product revenue • Approximately 65 employees; growing rapidly (30% in 2009) – > 25 PhD
  • 4. 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
  • 5. Kitware: Core Technologies Supercomputing Medical Visualization Imaging • Large data • Registration • Parallel computing • Segmentation • Client / Server • Image Processing • Web / grid architectures • Measurement • Human/Computer • Responsive GUI Interaction Software Process Open-Source Computer Toolkits Vision • Insight ToolKit (ITK) Expertise in: • VisualizationToolkit (VTK) • Behavior/event recognition • CMake • Detection and tracking • ParaView • Segmentation • Publications and consulting • Change Detection
  • 6. Supercomputing Visualization • Transform complex, large data into visual representations that are easier to understand and interact with
  • 9. 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
  • 10. 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
  • 11. 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)
  • 12. Computer Vision • Extract information from images or video streams
  • 13. VTK
  • 14. National Library of Medicine Segmentation and Registration Toolkit $13 million over 6 years Leading edge algorithms Open Source Software www.itk.org
  • 15. ParaView • 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
  • 16. 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
  • 17. 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
  • 19. 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.
  • 20. 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.
  • 22. 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 21
  • 23. Why CMake? It’s easy, and works well Typical Project without CMake (curl) • A build system $ ls CHANGES RELEASE-NOTES curl-config.in missing CMake acinclude.m4 curl-style.el mkinstalldirs that just works CMakeLists.txt build docs aclocal.m4 depcomp notes~ notes COPYING buildconf include packages CVS buildconf.bat install-sh reconf ChangeLog compile lib sample.emacs Makefile config.guess libcurl.pc.in src Makefile.am config.sub ltmain.sh tests Makefile.in configure m4 vc6curl.dsw README configure.ac maketgz • A build system $ ls src/ CMakeLists.txt Makefile.riscos curlsrc.dsp hugehelp.h version.h CVS Makefile.vc6 curlsrc.dsw macos writeenv.c that is easy to use Makefile.Watcom Makefile.vc8 Makefile.am curlutil.c main.c writeenv.h config-amigaos.h curlutil.h makefile.amiga writeout.c Makefile.b32 config-mac.h getpass.c makefile.dj writeout.h cross platform Makefile.in Makefile.inc config-riscos.h getpass.h mkhelp.pl config-win32.h homedir.c setup.h Makefile.m32 config.h.in homedir.h urlglob.c Makefile.netware curl.rc hugehelp.c urlglob.h 22
  • 24. 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. “
  • 25. Why CMake? Everyone is using it KDE 2006 – Tipping Point! • 800+ downloads per day from www.cmake.org • Major Linux distributions and Cygwin provide CMake packages • KDE, Second Life, Boost (Expermentally), many others
  • 26. 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
  • 27. 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
  • 28. Who Is Involved? Users Supporters • KDE • Kitware • Second Life • ITK • ARL • VTK • National Library of • ParaView Medicine • Trilinos • Scribus • Sandia National Labs • Boost (Experimentaly) • Los Alamos National • Mysql Labs • many more • NAMIC 27
  • 29. CMake Features • One simple language for all platforms • Built-in rules for common targets – Windows, Mac, Linux, UNIX variants – Executables – Embedded platforms via cross-compilation – Shared Libraries / DLLs • Generates native build systems – Static Libraries (archives) – Makefiles (GNU, NMake, Borland, etc.) – OS X Frameworks and App Bundles – KDevelop, Eclipse – Visual Studio 6,7,8,9 IDE • Custom rules for other targets – Xcode – Generated Documentation • Out-of-source build trees leave source – Generated sources and headers clean • Configuration rules • Interactive configuration via GUI – System introspection • Multiple configurations (Debug, Release, – Persistent variables (options, etc.) cached results) – Configured header files
  • 30. 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
  • 31. Automatic Testing Benefits “Automated Software Testing,” 1999, Dustin, et al, Addison Wesley
  • 33. Coverage Display GCov/Bullseye
  • 34. Video of ParaView Nightly Testing 33
  • 37. 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