pyft.FFT-Bibliothek für Pycuda und Pyopencl | |
Jetzt downloaden |
pyft. Ranking & Zusammenfassung
Anzeige
- 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