pyft.

FFT-Bibliothek für Pycuda und Pyopencl
Jetzt downloaden

pyft. Ranking & Zusammenfassung

Anzeige

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

pyft. Stichworte


pyft. Beschreibung

FFT-Bibliothek für Pycuda und Pyopencl Pyft ist ein Python-Modul, das die Implementierung von Batched FFT enthält, portiert aus der OpenCl-Implementierung von Apple. OpenCls Ideologie, Kernel-Code auf der Fliegenkarten auf Pycuda / Pyopencl zu erstellen, und die Vielfalt der Vorlagenmotoren von Python vereinfacht die Codegeneration einfacher. Ich habe Mako-Templating-Motor verwendet, einfach wegen der persönlichen Vorlieben. Der Code kann leicht geändert werden, um andere Engine zu verwenden.Warning: "Cuda" -Teil von Pyfft erfordert die aktuelle Entwicklungsversion von Pycuda (0,94) .Quick StartDie Verwendung ist ziemlich einfach. Importieren Sie zunächst NUMPY- und Planerstellungsschnittstelle von PYFFT (lassen Sie uns Cuda in diesem Beispiel verwenden): >>> von Pyft.Cuda-Importplan >>> Importieren NUMPYSINE Wir verwenden CUDA, es muss initialisiert werden, bevor alle CudA-Funktionen aufgerufen werden ( Standardmäßig verwendet der Plan vorhandene Kontext, es gibt jedoch andere Möglichkeiten. Siehe Referenzeintrag für weitere Informationen). Darüber hinaus benötigen wir ein GPUarray-Modul, um Daten an und von der GPU zu übermitteln: >>> von pycuda.tools Import make_default_context >>> Importieren von pycuda.gpuarray als gpuarray >>> Importieren von Pycuda.Driver als Cuda >>> cuda.init ( ) >>> context = make_default_context (), dann muss der Plan erstellt werden. Die Schöpfung ist nicht sehr schnell, hauptsächlich aufgrund der Kompilierungsgeschwindigkeit. Glücklicherweise, pycuda- und pyopencl-Cache-Cache-Quellen, also, wenn Sie denselben Plan für jeden Lauf Ihres Programms verwenden, wird es ziemlich schnell erstellt. >>> Plan = Plan ((16, 16)) Nun, lass uns jetzt ein einfaches Testarray vorbereiten und versuchen, den Plan darüber auszuführen: >>> daten = numpy.ones ((16, 16), dtype = numpy.compleex64)> >> gpu_data = gpuarray.to_gpu (Daten) >>> plan.execute (GPU_DATA) >>> result = gpu_data.get () >>> Drucken Ergebnis # DOCTST: + Ellipsis ... ] Wie erwartet, haben wir Array mit dem ersten nicht -Zero-Element, gleich der Array-Größe. Lassen Sie uns jetzt die inverse 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.ABS (NUMPY.SUM (NUMPY.ABS (Daten) - NUMPY.ABS (Ergebnis)) / data.size) >>> Fehler <1etruethat-6 ist gut genug f


pyft. Zugehörige Software

Ijson

Ein Python-Wrapper an Yajl, der eine Standard-Iterator-Schnittstelle bereitstellt, um JSON-Parsing zu streamen ...

198

Herunterladen