High-Performance Bildverarbeitung (nicht nur) mit JAVA. Prof. Dr.Thomas Netzsch - Hochschule Darmstadt - University of Applied Sciences



Ähnliche Dokumente
Dokumentation QuickHMI Erste Schritte

Multicore-Architekturen

Projektseminar Parallele Programmierung

Systemanforderungen für MuseumPlus und emuseumplus

Grafikkarten-Architektur

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten

Aufbau und Funktionsweise eines Computers

Programmierung. Rückblick. VWA - Programmierung Winter Algorithmus. Programmiersprache. Variable. Zuweisung. Bedingung.

Angebot. Tel.: Fax: Website: Shop:

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Checkliste Systemvoraussetzungen. Systemvoraussetzungen für den Datenbank-Server von MKS Goliath

Compute Unified Device Architecture CUDA

Paralleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21.

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

Bibliotheks-basierte Virtualisierung

Digitale Farbbildverarbeitung mit der GPU

BRUGO UG (haftungsbeschränkt) Haardtstraße Wiesthal

Vertiefungsrichtung Rechnerarchitektur

Supermicro VDI-Lösungen mit NVIDIA GRID

Computergrundlagen Moderne Rechnerarchitekturen

Computer und mehr.. Willkommen bei BMCHS-Computer aus Bergheim. Hardware - Motherboards Sockel 478/939 Intel Atom 6 auf Anfrage

Computergrundlagen Moderne Rechnerarchitekturen

2 Rechnerarchitekturen

Probestudium. Paralleles Programmieren für moderne Multicore-Prozessoren. Prof. Dr. Hans Jürgen Ohlbach

PService Version

GPU-Programmierung: OpenCL

Mikrocontroller. eine Einführung. Florian Schmitt / 34

Apple imac 5,1-20 Zoll (Late 2006)

CGM ALBIS & CGM ALBIS.YOU - Systemvoraussetzungen

Stand: NEVARIS Build Systemvoraussetzungen

Technische Voraussetzungen

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

General Purpose Computation on GPUs

Unternehmenspräsentation - X2E GmbH -

Siemons EDV-Service GbR. Heike Siemon

parat. AMDs x86-prozessoren bieten hierfür das 3

Stand: NEVARIS Systemvoraussetzungen

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo

NEU im Produktportfolio der BLUM GmbH:

Angebot gültig vom bis

2.009, 99. Produktbeschreibung. SCHENKER DTR 15 - amqv Notebook 15.6" FHD IPS, Core i7-7700, 16GB, 250GB SSD Artikelnummer: A

Grundlagen der Spieleprogrammierung

NEVARIS Systemvoraussetzungen

Produkte und Preise TERRA PC

Stand: NEVARIS Build SYSTEMVORAUSSETZUNGEN NEVARIS BUILD

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern

Hochleistungsberechnungen für Industrie und Weltraum

Anwendung der Roblet -Tec hnol ogie

Programmierung von Multicore-Rechnern

Embedded Linux- Robocup

GPGPU mit NVIDIA CUDA

Exklusive Preisliste für Nur für Sie!! Ihr exone Systemhauspartner Friedrich Ritschel GmbH & Co. KG Herr Jacobsen edv@ritschelkg.

Übersicht. Vergleich der Spielekonsole mit dem PC. Historie der Spielekonsolen von 1976 bis 1999

Mehrprozessorarchitekturen

Aufbau und Funktionsweise eines Computers

SIMATIC S Software Controller

Im Bereich der Entwicklung und Herstellung von Prozessoren spielen

NEVARIS Build Systemvoraussetzungen

Designed by ASUS. Eee PC 901GO. Modell: EAN: ASUS Computer GmbH Harkortstr Ratingen (Deutschland)

Angebot. Tel.: Fax: Website: Shop:

SG-TRONiC IT - Made in Germany

Einführung in C++ Oliver Rheinbach. Büro T03 R03 D53 Tel

World of Warcraft. Mindestvoraussetzungen

N Bit Binärzahlen. Stelle: Binär-Digit:

Georg Hager Regionales Rechenzentrum Erlangen (RRZE)

320 GB. Festplatte 320 GB. Festplatte

Maximale Power mit der neuen ERAZER Gaming Notebook-Linie von MEDION

Die Vision Landschaft und was sie mit Moore s Gesetz zu tun hat

OS Datensysteme GmbH

Produkte und Preise TERRA PC

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

NETx KNX OPC Server. Standard OPC Lösung für KNX Projekte von unterschiedlicher Größe. Funktionen Versionen Systemvoraussetzungen Bestellhinweise

Systemvoraussetzungen

Kirchstrasse 11 CH Sins Telefon: Fax: info@tinline.ch

CUDA. Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig. Hardware-Software-Co-Design Universität Erlangen-Nürnberg

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung

Angebot. Tel.: Fax: Website: Shop:

PC-SHOP DELMENHORST. Kundeninformation - 03/ Delmenhorst

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

SYSTEMVORAUSSETZUNGEN PHOENIX PRODUKTE

INDEX. Netzwerk Überblick. Benötigte Komponenten für: Windows Server Windows Server 2008 R2. Windows Server 2012

Enterprise Portal - Abbildung von Prozessen, SAP-Datenintegration und mobile Apps

Hardware & Kernel-Module

Client: min. Intel Pentium IV oder höher bzw. vergleichbares Produkt

Systemvoraussetzungen für Autodesk Revit Produkte (gemäß Angaben von Autodesk)

LEISTUNGSBESCHREIBUNG ZU UNSERER AUSSCHREIBUNG AS 02/46-09

Systemvoraussetzungen Werkstattplanungssystem WPS

Systemanforderungen Verlage & Akzidenzdruck

NEVARIS icebim Kurzinstallationsanleitung

Konzeption und Implementierung einer Videodigitalisierung und Videoausgabe unter Embedded Linux. Kolloquium von Frank Schwanz

Acer Commercial PCs Endverbraucher-Preisliste gültig ab

Elektrohandel. Dirk ter Meer. Gutes muss nicht Teuer sein!!

Ausarbeitung Seminarvortrag High-Performance-Computing WS 2011/2012

Produkte und Preise TERRA PC

Angebot. Tel.: Fax: Website: Shop:

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

Ettlingen _ // Ettlingen // 2008

Transkript:

High-Performance Bildverarbeitung (nicht nur) mit JAVA 1

High-Performance Bildverarbeitung (nicht nur) mit JAVA Fragen: wie kann ein typisches BV-Unternehmen wirtschaftlich an der aktuellen Hardwareentwicklung teilhaben wie kann aktuelle Hardware sinnvoll genutzt werden Kein Thema: Supercomputing, Gridcomputing, Cloudcomputing 2

Übersicht Aktuelle Hardwareentwicklung BV mit intelligenten Kameras und PC Parallele BV mit JAVA und ImageJ Verteilte BV mit JAVA/RMI BV auf Grafikkarten (BV auf mobilen Endgeräten) Zusammenfassung 3

Aktuelle Hardwareentwicklung Moore'sches Gesetz (Gordon Moore, Gründer von INTEL, 1965): Verdopplung der Transistoren auf einem Chip alle 18 Monate Gültig bis heute für CPUs Grafikprozessoren Speicher 4

Aktuelle Hardwareentwicklung Beispiele: Intel 486, 1 Million Instruktionen/s, 225 $, 1991 Intel Pentium 4, 3 GHz, 9075 MIPS, 400 $, 2004 Intel Core2Duo, 22000 MIPS, 325 $, 2007, d.h 1.6 Cent / MIPS 5

Aktuelle Hardwareentwicklung Nvidia GV-N295 1792 MB, 896bit, 2 x 240 Unified Shader @ 1.242 MHz, 450.- Sony W960i 8GB, Touchscreen, 3 Megapixel, Java, WLAN, Strichcode- und DataMatrixbearbeitung, Visitenkartenscanner, 220.- 6

Aktuelle Hardwareentwicklung Bandbreiten aktueller Bus- und Netzwerktechnologien : Hauptspeicher: > 1000 MByte/s GBit Ethernet: 11 MByte/s WLAN: 54 MBit/s, 30 bis 100 m Infrarot: 16 MBit/s, bis 5 m Bluetooth: 1-3 MBit/s, 10 bis 200 m 7

Aktuelle Hardwareentwicklung Beispiel Google (Börsengang 2004): 719 Racks mit 63 272 Rechnern 126 544 CPUs 253 Terahertz Ersatz-Taktfrequenz 127 Terabyte RAM 5 Petabyte Festplattenspeicher ca. 10 Milliarden CPU-Zyklen pro Anfrage Speicherung und Indizierung des gesamten WWW 8

Aktuelle Hardwareentwicklung Szenarien zur Teilhabe an der Entwicklung: Intelligente Kamera und PC 1 Multicore CPU Viele Multicore PCs (Grid- oder Cloud-Computing) Multicore CPU und Grafikkarte Mobiles Endgerät und??? IMMER notwendig: Kommunikation Multithreading 9

Aktuelle Hardwareentwicklung Frage: Wie kann ein typisches Bildverarbeitungsunternehmen wirtschaftlich an dieser Entwicklung teilhaben? Kriterien: Funktionalität, Stabilität, Hardwarekosten, Lizenzkosten, Einarbeitungszeit, Entwicklungszeit, langfristige Verfügbarkeit, Komplexität, Dokumentierbarkeit etc. 10

BV mit mobilen Kameras und PC Konzept: BV auf Kamera (z.b. in C ) Bedienung auf PC (Menügenerator, evtl. Touchsceen, Pentiumklon 200 MHz, 256 MB) Kommunikation über TCP/IP (Sockets) Klarschriftlesung Barcode Flächencode etc. Standardprotokoll (VDMAXML) 11

BV mit mobilen Kameras und PC Eine mögliche Lösung: 12

BV mit mobilen Kameras und PC 13

BV mit mobilen Kameras und PC 14

BV mit mobilen Kameras und PC JAVA bietet Multithreading Hardwareunabhängigkeit (Windows, Linux, mobile Geräte), ( write once, run everywhere ) Netzwerktransparenz (auch in heterogenen Umgebungen) Nachweislich vergl. geringe Entwicklungszeiten Performance (OpenGL, DirectX, Hot-Spot-JIT-Compiler) Freie Verfügbarkeit Umfassende Funktionalität (APIs für fast alles) Dokumentierbarkeit Stabilität Sehr gute, freie Entwicklungsumgebungen (Eclipse, Netbeans) 15

BV mit mobilen Kameras und PC Kommunikation: Consumer Producer Entwurfsmuster Producer schreibt Daten in Puffer Consumer liest Daten aus Puffer Kommunikation über SharedMemory, Synchronisation notwendig Normalerweise komplex 16

BV mit mobilen Kameras und PC Lösung mit JAVA (Concurrent-Klassenbibliothek): Typ BlockingQueue, Methoden put und take Thread 1: put Thread 2: take Synchronisation: automatisch Entwicklungszeiten Menügenerator und Implementierung des XMLProtokolls: 12 Tage Dokumentation: 1 Tag (javadoc, html) Nacharbeiten: 1 Tag 17

BV mit mobilen Kameras und PC Fazit: JAVA ist in diesem Szenario sehr gut geeignet Kurze Entwicklungszeiten Stabilität Qualität Dokumentierbarkeit zu gewährleisten. 18

Parallele BV mit ImageJ und JAVA Aufgabe: BV-Operationen parallelisieren Lösung: Teile Bild(er) in mehrere Bereiche (Kacheln, engl. Tiles) Jede Kachel wird von einem Thread bearbeitet Jeder Thread läuft auf einem eigenen Prozessorkern 19

Parallele BV mit ImageJ und JAVA ImageJ Entwicklung des US National Institute of Health (NIH) 100 % JAVA OpenSource, kommerziell anwendbar Werkzeuge zum Erzeugen, Visualisieren, Verarbeiten, Analysieren, Öffnen und Speichern von Bildern Einfacher Plugin-Mechanismus Markosprache Servermodus 20

Parallele BV mit ImageJ und JAVA Plugin-Konzept 21

Parallele BV mit ImageJ und JAVA Beispiel Aus: Burger, Burge Digitale Bildverarbeitung 22

Parallele BV mit ImageJ und JAVA Aus: Bengel et. al.: Masterkurs parallele und verteilte Systeme; Vieweg, 2008 23

Parallele BV mit ImageJ und JAVA XY-Gradient Invertierung Core2Duo T7500 Core2Duo T7500 1,2 1,6 1,4 0,8 Rechenzeit 0,6 Speedup 0,4 0,2 t in s / Speedupfaktor t in s / Speedupfaktor 1 1,2 1 Rechenzeit 0,8 Speedup 0,6 0,4 0,2 0 0 1 2 3 Threads 4 1 2 3 4 Threads 24

Median 7er Kernel Median 21er Kernel Core2Duo T7500 Core2Duo T7500 1,8 18 1,6 16 1,4 14 1,2 Rechenzeit 1 Speedup 0,8 0,6 0,4 0,2 t in s / Speedupfaktor t in s / Speedupfaktor Parallele BV mit ImageJ und JAVA 12 Rechenzeit 10 Speedup 8 6 4 2 0 0 1 2 3 Threads 4 1 2 3 4 Threads 25

Parallele BV mit ImageJ und JAVA XY-Gradient Invertieren Core2Quad, Q9450, 2,66 GHz Core2Quad, Q9450, 2,66 GHz 2,5 1,2 2 0,8 Rechenzeit 0,6 Speedup 0,4 0,2 0 t in s / Speedupfaktor t in s / Speedupfaktor 1 1,5 Rechenzeit Speedup 1 0,5 0 1 2 3 Threads 4 1 2 3 4 Threads 26

Parallele BV mit ImageJ und JAVA Median 21er Kernel Core2Quad, Q9450, 2,66 GHz 14 t in s / Speedupfaktor 12 10 8 Rechenzeit Speedup 6 4 2 0 1 2 3 4 Threads 27

Parallele BV mit ImageJ und JAVA 28

Parallele BV mit ImageJ und JAVA Fazit: Multithreading ist einfach zu handhaben Speedup hängt von der Komplexität der Anforderung ab 2-Kern Prozessoren können effizient benutzt werden 4-Kern Prozessoren: neuere Modelle testen 29

Verteilte BV (mit JAVA/RMI) Aufgabe: Bearbeite sehr große Bilder oder Bildsequenzen Lösung: Barbeite Kacheln oder ganze Bilder im Netzwerk Umsetzung: JAVA RMI - Bibliothek 30

Verteilte BV (mit JAVA/RMI) Vorgehensweise analog zu Multicoreprogramming Bild evtl. kacheln Bild oder Teilbild an andere Rechner senden Operationen auf allen Rechnern gleichzeitig ausführen Ergebnisbilder zurücksenden Wurde getestet und funktioniert Programmieraufwand: überschaubar 31

Einschub: BV mit JAVA/C++ JNI (Java Native Interface): Schnittstelle zu anderen Programmiersprachen Aus: Irzinger et. al.: Projektdokumentation, WS2007 32

BV auf Grafikkarten 33

BV auf Grafikkarten 34

BV auf Grafikkarten 35

BV auf Grafikkarten 36

BV auf Grafikkarten 37

BV auf Grafikkarten 38

BV auf Grafikkarten 39

BV auf Grafikkarten 40

BV auf Grafikkarten 41

BV auf Grafikkarten 42

BV auf Grafikkarten 43

BV auf Grafikkarten 44

BV auf Grafikkarten 45

BV auf Grafikkarten 46

BV auf Grafikkarten 47

BV auf Grafikkarten 48

BV auf Grafikkarten 49

BV auf Grafikkarten Ergebnis: Aus: Gilner et.al., Projektdokumentation, WS2008 SingleCore mit 2,7 GHz gegen GeForece 8400: 27:1 50

BV auf Grafikkarten Fazit: GPU ist deutlich schneller Nichtoptimierte Verwendung ist einfach Programmiermodell ist zukunftssicher (Speicher-)Optimierung ist sehr komplex Cuda wird verwendet 51

BV auf Grafikkarten 52

Zusammenfassung High-Performance BV auf aktueller Hardware bedeutet Verwendung von: Mobilen Geräten Intelligenten Kameras Multicore Prozessoren Multicore Prozessoren im Netzwerk Grafikkarten zur Berechnung von BV-Operationen Alle Szenarien sind verstanden, anwendbar und werden in der Lehre berücksichtigt Projekte WS2007, WS2008, SS2009, WS2009,... LV: CAIP 3, BV mit JAVA, Algorithmen in C++ 53

Zusammenfassung Danke an: Pharmacontrol Electronic GmbH, Zwingenberg BASF SE, Ludwigshafen OBV- Studierende: Belitz, Gillner, Irzinger, Mengler, Nau, Ostojic u.a. Hr. Friehl, Hr. Häberle Alle Kollegen für die Unterstützung und dem Dekanat/FB und der Hochschulleitung für die Genehmigung des FS 54