Experiments using the RPI Zero GPU for FFT (1D and 2D)

Overview

RPI0_GPU_FFT

Experiments using the RPI Zero GPU for FFT/IFFT 1D/2D

For an input 4194304 (1D), the GPU was around 7X faster than np.fft.fft and np.fft.ifft in sequence.

For an input 1024x1024 (2D), the GPU was around 2X faster than np.fft.fft2 and np.fft.ifft2 in sequence.

The CPU is always faster for small arrays (and the min size for GPU is 256).

Instalation

Clone this repo (or simply download all files to your RPI0) and run make. It will generate a file rpi0_gpu_fft.so that you should have in the same directory as the rpi0_gpu_fft.py. That's it ;)

I'm supposing your RPI0 has the rest of the files necessary installed by default (/opt/vc/src/hello_pi/hello_fft/).

TL;DR

Totally untested and without any guarantee what-so-ever :D

You can try it by running: $ sudo -E python rpi0_gpu_fft.py.

I wrote this hack to use with my "smart" camera: https://github.com/ricardodeazambuja/Maple-Syrup-Pi-Camera

Original code / ideas from:

Misc

You might also like...
Experiments with Mozzi, mostly on SAMD21 chips

mozzi_experiments Experiments with Mozzi, mostly on SAMD21 chips Sketches eighties_dystopia - A swirling ominous wub that evolves over time Demos "eig

Klipper-dev - Kevin's development repository for Klipper experiments.

Welcome to the Klipper project! https://www.klipper3d.org/ Klipper is a 3d-Printer firmware. It combines the power of a general purpose computer with

Procedural Generation Experiments
Procedural Generation Experiments

Procedural Generation Experiments What is this? This application is a tool to create and paint L-System in a fully interactive and dynamic way. “But,”

Jimp-native is a fast C++ re-implementation of Jimp with zero system dependencies and minimal overhead!

Jimp native Make your sever-side Jimp code run 10x faster! Jimp-native is a fast C++ re-implementation of Jimp with zero system dependencies and minim

Zerobug is a 3D-printed micro-servo hexapod robot powered by a Raspberry Pi Zero and a STM32F103
Zerobug is a 3D-printed micro-servo hexapod robot powered by a Raspberry Pi Zero and a STM32F103

ZeroBug - DIY Hexapod Robot Zerobug is a 3D-printed micro-servo hexapod robot powered by a Raspberry Pi Zero and a STM32F103. The Pi Zero is in charge

Ziggified GLFW bindings with 100% API coverage, zero-fuss installation, cross compilation, and more.

mach/glfw - Ziggified GLFW bindings Ziggified GLFW bindings that Mach engine uses, with 100% API coverage, zero-fuss installation, cross compilation,

Classic iPod mod with Raspberry Pi Zero and color screen
Classic iPod mod with Raspberry Pi Zero and color screen

ipodrpi Classic iPod mod with Raspberry Pi Zero and color screen. Suitable for OSMC and plain Raspbian install. Install OSMC: Burn SD card with Raspbe

Because why not? Pi Zero bare metal project that ends in an RTOS implementation

PiZeroRTOS Because why not? This repo starts out as a Pi Zero bare metal project and it could very well end up as a viable RTOS implementation with a

"Zero setup" cross-compilation for a wide variety of architectures.

"Zero setup" cross-compilation for a wide variety of architectures. xcross includes compact docker images and a build utility for minimal setup C/C++ cross-compiling, inspired by rust-embedded/cross

Owner
Ricardo de Azambuja
I'm an Electrical Engineer trying to make the world a better place with the help of electronics, robotics and machine learning
Ricardo de Azambuja
RPi Pico/RP2040 firmware for the Scoppy Oscilloscope

scoppy-pico RPi Pico/RP2040 firmware for the Scoppy Oscilloscope Installation and getting started instructions Scoppy Android app - Play Store Scoppy

null 58 Dec 20, 2022
oZKS (Ordered Zero-Knowledge Set) is a library that provides an implementation of an Ordered (and Append Only) Zero-Knowledge Set.

Ordered Zero-Knowledge Set - oZKS Introduction oZKS is a library that provides an implementation of an Ordered (and Append Only) Zero Knowledge Set. A

Microsoft 11 Dec 20, 2022
Embed read-only filesystems into any C++11 program w. a single header, zero dependencies and zero modifications to your code

c-embed Embed read-only filesystems into any C++11 program w. a single header, zero dependencies and zero modifications to your code. Usage c-embed al

Nick McDonald 9 Dec 29, 2022
Command line C++ and Python VSTi Host library with MFCC, FFT, RMS and audio extraction and .wav writing.

______ _ ___ ___ | ___ \ | | | \/ | | |_/ /___ _ __ __| | ___ _ __| . . | __ _ _ __

Leon Fedden 297 Dec 30, 2022
mimikatz is a tool I've made to learn C and make somes experiments with Windows security

mimikatz is a tool I've made to learn C and make somes experiments with Windows security

Benjamin DELPY 16.6k Dec 31, 2022
My experiments with Linux for the Apple M1 platform, based on Asahi and Corellium patches

Linux kernel ============ There are several guides for kernel developers and users. These guides can be rendered in a number of formats, like HTML an

Danny Lin 9 Oct 24, 2021
An open collection of tools and experiments for rendering wide-gamut scene-linear data into an image for an SDR or HDR display device.

Open Display Transform An open collection of tools and experiments for rendering wide-gamut scene-linear data into an image for an SDR or HDR display

Jed Smith 127 Dec 29, 2022
experiments with the Gameboy Advance serial interface

(I'm hedging my bets with this repo name. I'd want to add more serial setup tutorials. For example, I bought a bunch of Gameboy Advance wireless adapt

Ties Stuij 32 Jan 6, 2023
Fork of dsda-doom with experiments

dsda-doom-experiments This is my personal fork of dsda-doom for running experiments. This breaks demo compatibility. DO NOT USE. The current experimen

jsd1982 1 Oct 7, 2021
Experiments with plauger 'standard C library' source code

STANDARD C LIBRARY CODE DISK V. 2.0 This diskette contains all the source code from ``The Standard C Library,'' by P.J. Plauger (Englewood Cliffs, N.

Luca Bolognese 1 Oct 27, 2021