Thursday 2 November 2017

Cuda Gleitender Mittelfilter


Für einen anderen Ansatz können Sie das exponentielle gleitende Durchschnittsfenster abschneiden und dann Ihr gefiltertes Signal berechnen, indem Sie eine Faltung zwischen Ihrem Signal und dem fensterartigen Exponential durchführen. Die Faltung kann mit Hilfe der freien CUDA-FFT-Bibliothek (cuFFT) berechnet werden, da, wie Sie vielleicht wissen, die Faltung als punktweise Multiplikation der beiden Signale in der Fourier-Domäne ausgedrückt werden kann (Dies ist der treffende Name Faltungstheorem, Die mit einer Komplexität von O (n log (n)) verläuft). Diese Art von Ansatz wird Ihre CUDA-Kernel-Code zu minimieren und laufen sehr sehr schnell, auch auf einer GeForce 570 Besonders, wenn Sie alle Ihre Berechnungen in Single (float) Präzision zu tun. Ich würde vorschlagen, die oben genannten Differenz-Gleichung zu manipulieren, wie unten angegeben und dann mit CUDA Thrust primitives. DIFFERENZ-GLEICHUNG MANIPULATION - EXPLIZIT FORM DER UNTERSCHIED-GLEICHUNG Durch einfache Algebra können Sie folgendes finden: Dementsprechend ist die explizite Form die folgende: CUDA THRUST IMPLEMENTATION Sie können das obige explizite Formular durch die folgenden Schritte implementieren: Initialisieren einer Eingabesequenz dinput to Alpha mit Ausnahme von dinput0 1. Definieren Sie einen Vektor d1overbetatothen gleich 1, 1 beta, 1 beta2, 1 beta3. Multiplizieren Sie elementweise dinput durch d1overbetatothen Führen Sie eine inclusivescan, um die Sequenz der yn betan zu erhalten Teilen Sie die obige Sequenz durch 1, 1 beta, 1 beta2, 1 beta3. Der obige Ansatz kann für Linear Time-Varying (LTV) - Systeme empfohlen werden. Für lineare zeitinvariante (LTI) Systeme kann der von Paul erwähnte FFT-Ansatz empfohlen werden. Ich biete ein Beispiel für diesen Ansatz durch die Verwendung von CUDA Thrust und cuFFT in meiner Antwort auf FIR-Filter in CUDA. Was ist CUDA Anmeldung heute Einführung in die Parallelprogrammierung Ein offener, Online-Kurs von Udacity Instruktoren: Dr. John Owens, UC Davis und Dr. David Luebke, NVIDIA CUDA reg ist eine Parallelrechenplattform und ein von NVIDIA erfundenes Programmiermodell. Es ermöglicht dramatischen Anstieg der Rechenleistung durch die Nutzung der Leistung der Grafik-Processing-Unit (GPU). Mit Millionen von CUDA-fähigen GPUs bisher verkauft, Software-Entwickler, Wissenschaftler und Forscher finden breite Einsatzmöglichkeiten für GPU-Computer mit CUDA. Hier sind ein paar Beispiele: Identifizieren versteckte Plaque in Arterien. Herzinfarkte sind weltweit die häufigste Todesursache. Harvard Engineering, Harvard Medical School und Brigham Womens Hospital haben sich zusammengetan, um GPUs zu verwenden, um den Blutfluss zu simulieren und versteckte arterielle Plaque ohne invasive bildgebende Verfahren oder explorative Chirurgie zu identifizieren. Analysieren Sie den Flugverkehr. Das Nationale Luftraumsystem verwaltet die bundesweite Koordination des Flugverkehrs. Computermodelle helfen, neue Wege zu finden, um Staus zu lindern und Flugzeugverkehr effizient zu halten. Unter Verwendung der Rechenleistung von GPUs erzielte ein Team der NASA einen großen Leistungsgewinn, wodurch die Analysezeit von zehn Minuten auf drei Sekunden reduziert wurde. Visualisieren Sie Moleküle. Eine molekulare Simulation namens NAMD (nanoskalige Molekulardynamik) erhält eine große Leistungssteigerung mit GPUs. Die Beschleunigung ist ein Ergebnis der parallelen Architektur von GPUs, die es NAMD-Entwicklern ermöglicht, rechenintensive Teile der Anwendung mit dem CUDA Toolkit auf die GPU zu portieren. Hintergrund GPU Computing: Die Revolution Youre konfrontiert mit Imperativen: Verbessern Sie Leistung. Lösen Sie ein Problem schneller. Parallele Verarbeitung wäre schneller, aber die Lernkurve steil ist es nicht mehr. Mit CUDA können Sie C, C und Fortran Code direkt in GPU, keine Assembler-Sprache erforderlich. Entwickler in Unternehmen wie Adobe, ANSYS, Autodesk, MathWorks und Wolfram Research wachen, dass schlafende Riese die GPU - universelle wissenschaftliche und technische Informatik über eine Reihe von Plattformen zu tun. Mithilfe von High-Level-Sprachen führen GPU-beschleunigte Anwendungen den sequentiellen Teil ihrer Arbeitsbelastung auf der CPU aus, die für die Leistung eines einzelnen Threads optimiert ist, während die parallele Verarbeitung auf der GPU beschleunigt wird. Dies nennt man GPU-Computing. GPU-Computing ist möglich, weil heute GPU viel mehr als Grafik zu tun macht: Es sizzles mit einem teraflop der Fließkomma-Leistung und knirscht Anwendungsaufgaben, die für alles von der Finanzierung zur Medizin bestimmt sind. CUDA ist weit verbreitet durch Tausende von Anwendungen und veröffentlichte Forschungs-Papiere und unterstützt von einer installierten Basis von über 375 Millionen CUDA-fähigen GPUs in Notebooks, Workstations, Computer-Cluster und Supercomputer eingesetzt. Besuchen Sie CUDA Zone für Anwendungsbeispiele in verschiedenen vertikalen Märkten und erwecken Sie Ihren GPU Riesen. Geschichte der GPU-Berechnung Die ersten GPUs wurden als Grafikbeschleuniger entworfen, die nur bestimmte Festnetz-Pipelines unterstützen. In den späten 1990er Jahren wurde die Hardware zunehmend programmierbar und gipfelte in der ersten GPU von NVIDIA im Jahr 1999. Weniger als ein Jahr nachdem NVIDIA den Begriff GPU prägte, waren Künstler und Spieleentwickler die einzigen, die bahnbrechende Arbeit mit der Technologie machten: Forscher waren es Wodurch seine hervorragende Gleitkomma-Leistung erreicht wird. Die GPGPU-Bewegung (General Purpose GPU) war angebrochen. Aber GPGPU war noch lange nicht einfach, selbst für diejenigen, die Grafik-Programmiersprachen wie OpenGL kannten. Entwickler mussten wissenschaftliche Berechnungen auf Probleme aufbauen, die durch Dreiecke und Polygone repräsentiert werden konnten. GPGPU war praktisch unbegrenzt für diejenigen, die nicht die neuesten Grafik-APIs gespeichert hatte, bis eine Gruppe von Stanford University Forscher, um die GPU als Streaming-Prozessor neu zu entwickeln. Im Jahr 2003 enthüllte ein Forscherteam von Ian Buck Brook, das erste weit verbreitete Programmiermodell, um C mit Daten-Parallel-Konstrukten zu erweitern. Unter Verwendung von Konzepten wie Streams, Kerneln und Reduktionsoperatoren enthüllte das Brook-Compiler - und Runtime-System die GPU als Allzweckprozessor in einer hochrangigen Sprache. Am wichtigsten war, Brook-Programme waren nicht nur leichter zu schreiben als Hand-abgestimmt GPU-Code, sie waren sieben Mal schneller als vergleichbare bestehende Code. NVIDIA wusste, dass blitzschnelle Hardware mit intuitiven Software - und Hardware-Tools gekoppelt werden musste, und lud Ian Buck dazu ein, sich dem Unternehmen anzuschließen und eine Lösung für die nahtlose Ausführung von C auf der GPU zu entwickeln. NVIDIA stellte die Software und Hardware zusammen, enthüllte CUDA 2006, die weltweit erste Lösung für General-Computing auf GPUs. Tools und Training Das CUDA-Ökosystem wächst rasant, da immer mehr Unternehmen erstklassige Tools, Services und Lösungen anbieten. Wenn Sie Ihren eigenen Code schreiben möchten, ist der einfachste Weg, die Leistung von GPUs zu nutzen, mit dem CUDA Toolkit. Die eine umfassende Entwicklungsumgebung für C - und C-Entwickler bietet. Das CUDA Toolkit enthält einen Compiler, Mathematik-Bibliotheken und Tools zum Debuggen und Optimieren der Performance Ihrer Anwendungen. Youll finden Sie auch Code-Beispiele, Programmierhandbücher, Benutzerhandbücher, API-Referenzen und anderen Dokumentationen, um Ihnen den Einstieg zu erleichtern. NVIDIA bietet all dies kostenlos, einschließlich NVIDIA Parallel Nsight für Visual Studio, die branchenweit erste Entwicklungsumgebung für massiv parallele Anwendungen, die sowohl GPUs als auch CPUs verwenden. Lernen, CUDA ist bequem, mit umfassenden Online-Schulungen sowie andere Ressourcen, wie Webinare und Bücher. Über 400 Universitäten und Hochschulen lehren CUDA-Programmierung, darunter Dutzende von CUDA Centres of Excellence und CUDA Forschungs - und Ausbildungszentren. Für Entwickler

No comments:

Post a Comment