# Resources
## Useful Repos
- **Ministark**: GPU accelerated STARK prover built on arkworks-rs https://github.com/andrewmilson/ministark
- **Winterfell**: A STARK prover and verifier for arbitrary computations https://github.com/facebook/winterfell
- **GPUSnarks**: CUDA implementation of Fast Fourier Transformations on finite fields https://github.com/MariusVanDerWijden/gpusnarks
## Useful Links
- **CUDA Introduction**: https://www.notamonadtutorial.com/cuda-from-scratch/
- **Rust CUDA ecosystem**: https://github.com/Rust-GPU/Rust-CUDA
- **Reed-Solomon Explained**: https://www.youtube.com/watch?v=1pQJkt7-R4Q
### FFT / NTT
- **FFT Explained**: https://www.youtube.com/watch?v=h7apO7q16V0
- **Cooley-Tukey FFT Algorithm** https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm
- **DFT over a ring**: https://en.wikipedia.org/wiki/Discrete_Fourier_transform_over_a_ring#Number-theoretic_transform
- **Brief introduction to NTT**: https://cgyurgyik.github.io/posts/2021/04/brief-introduction-to-ntt/
- **(primitive) roots of unity of a finite field** https://www.youtube.com/watch?v=hNuz3AHbRRg
- **FFT and Interpolation implemented in Metal**: https://github.com/andrewmilson/ministark/tree/main/gpu-poly
- **Nayuki NTT**: abstract and demo of NTT https://www.nayuki.io/page/number-theoretic-transform-integer-dft (includes calculator)
### Butterfly, bit reversal, DIT and DIF, n-radix
- **Butterfly diagrams explained simply** https://www.alwayslearn.com/DFT%20and%20FFT%20Tutorial/DFTandFFT_FFT_TheButterflyDiagram.html
- **2-radix FFT explained** https://www.youtube.com/watch?v=lGCAlv3G8Oc
- **FFT stages interpreted through Linear Algebra** https://www.youtube.com/watch?v=A6eBcTHlEL4
- **Short and informal doc about parallel FFT** https://cs.wmich.edu/gupta/teaching/cs5260/5260Sp15web/studentProjects/tiba&hussein/03278999.pdf
- **Another explanation of 2-radix FFT, with mentions to other-radixes algorithms** https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm#The_radix-2_DIT_case
- **Comprehensive book about FFT and its parallelization (super recommended)**: http://dsp-book.narod.ru/FFTBB/0270_PDF_TOC.pdf
### Finite Field implementations
risc0
- Tech: Metal & CUDA
- Felt size: U32
- Modulo: hardcoded
ministark
- Tech: Metal
- Felt size: felt U64, U128, U256
- Modulo: hardcoded
gpusnarks
- Tech: CUDA
- Size: usa
- Modulo: hardcoded
Z-Price MSM
- Tech: CUDA