Pycudafft

FFT-Bibliothek für Pycuda
Jetzt downloaden

Pycudafft Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • MIT/X Consortium Lic...
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Bogdan Opanchuk
  • Website des Verlags:
  • http://github.com/Manticore

Pycudafft Stichworte


Pycudafft Beschreibung

FFT-Bibliothek für Pycuda Pycudafft ist eine FFT-Bibliothek für Pycuda, die in Python.Developer geschrieben ist Infolgedessen wurde dieses Software-Stück geschrieben. Es enthält die Implementierung von Batched FFT, portiert aus der OpenCl-Implementierung von Apple. OpenCls Ideologie, Kernel-Code auf den Fliegenkarten auf Pycuda zu erstellen, und die Vielfalt der Vorlagenmotoren von Python vereinfacht die Code-Generation einfacher. Ich habe Mako-Templating-Motor verwendet, einfach wegen der persönlichen Vorlieben. Der Code kann leicht geändert werden, um alle anderen Engine zu verwenden. Ergänzung enthält das Projekt-Repository Wrapper, der die Batch-Unterstützung für Cufft und seine Zuordnung zu PYCUDA fügt. Sie wurden zu Testzwecken hinzugefügt und werden nicht aktiv unterstützt. Quick StartDie Verwendung ist ziemlich einfach. Erstens, Import Pycudafft und NUMPY: >>> Import pycuda.autoinit >>> Importieren von pycuda.gpuarray als GPUarray >>> von Pycudafft Import FFTPlan >>> Import NOBPYDEN Der Plan muss erstellt werden. Die Schöpfung ist nicht sehr schnell, hauptsächlich aufgrund der Kompilierungsgeschwindigkeit. Glücklicherweise jedoch Pycuda Caches kompilierte Quellen, also, wenn Sie denselben Plan für jeden Lauf Ihres Programms verwenden, wird es ziemlich schnell erstellt. >>> Plan = FFTPlan (16, 16) Nun, lassen Sie uns das einfache Testarray vorbereiten und versuchen, den Plan darüber auszuführen: >>> Daten = NUMPY.ONE ((16, 16), DTTYPE = NUMPY.COMPLEX64) >>> gpu_data = gpuarray.to_gpu (Daten) >>> plan.execute (gpu_data) >>> result = gpu_data.get () >>> Drucken Ergebnis # DOCTST: + Ellipsis ] Wie erwartet hatten wir ein Array mit der ersten Nicht-Null Element, gleich der Arraygröße. Lassen Sie uns jetzt die umgekehrte Transformation ausführen. >>> plan.execute (GPU_DATA, INVERSE = TRUE) >>> result = gpu_data.get () Da Daten nicht integer sind, können wir sie nicht einfach vergleichen. Wir berechnen stattdessen einfach Fehler. >>> ERROR = NUMPY.SUM (NUMPY.ABS (Daten) - NUMPY.ABS (Ergebnis)) / 256 >>> Fehler <1E-6 Truethat ist gut genug für einzelne Präzisionsnummern.ReferenceFFTPlanclass, enthaltend vorkalzelte FFT-Plan.Arguments: FFTPlan (X, Y = None, Z = None, Split = FALSE, DTYPE = NUMPY.COMPLEX64) X, Y, Z: Problemgröße. Wenn Z und / oder Y nicht definiert sind, werden 2D- oder 1D-Plan erstellt. WARNUNG: 2D- und 3D-Pläne mit y == 1 oder z == 1 werden im Moment nicht unterstützt. SPLIT: Bei TRUE unterstützt der Plan separate Datenarrays mit echten und imaginären Teilen anstelle von verschachtelten Arrays.dtype: Datentyp zu benutzen. Im Moment ist nur complex64 (einzelne Präzision) unterstützt. Array. Wenn nicht definiert, wird die Ausführung angelegt und die Ergebnisse werden in data_in.inverse gespeichert: Wenn True, Inverse-Transformation wird durchgeführt. BATCH: Anzahl der Datensätze zum Prozess. Sie sollten nacheinander in Data_in.fftPlan.executeSplit () Execute-Plan für Split-Daten-Arrays ausführen. Mit realen und imaginären Datenteilen entsprechend.Data_Out_RE, data_out_im: Ausgabearrays. Wenn nicht definiert, wird die Ausführung angelegt und die Ergebnisse werden in data_in_re und data_in_im.inverse gespeichert: Wenn True, Inverse-Transformation wird ausgeführt. BATCH: Anzahl der Datensätze zum Prozess. Sie sollten nacheinander in Data_in angeordnet sein. Anforderungen: · Python


Pycudafft Zugehörige Software