1000x speedup on interactive Mandelbrot zooms: from C, to inline SSE assembly, to OpenMP for multiple cores, to CUDA, to pixel-reuse from previous frames, to inline AVX assembly...

This page summarizes the projects mentioned and recommended in the original post on /r/programming

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • MandelbrotSSE

    Real-time Mandelbrot zoom via SSE, AVX, OpenMP, CUDA, XaoS...

  • I verified that the limiting factor is memory bandwidth - and that once we switch to a fully CPU-bound mode (with option -p 100) the computation speed scales linearly with more cores.

  • FractalAsm

    x86 inline assembly language Mandelbrot and Julia fractal program (Windows)

  • Nice work and interesting route. My Mandelbrot route was (IIRC) [machine/OS then language] IBM XT CGA Turbo Pascal, Sun 3/260 Unix Pascal with SunCORE, Masscomp/Chromatics graphics box Unix C with GKS, Sun 3/260 Unix C with SunCORE, Amiga C, Pentium PC VGA C, Pentium PC Windows C, My own CPU and computer design Assembly, and finally Pentium PC Windows/Linux Assembly (with C for GUI part). If you want to see my Windows/Linux assembly code (basic x86 assembly) here's the links: https://github.com/mrmcsoftware/FractalAsm (for Windows) https://github.com/mrmcsoftware/FractalAsm-Linux (for Linux) . And if you want to see it running on my own CPU and computer design (via simulator), view my video https://www.youtube.com/watch?v=ygf0aa1r3NY (part of a series of videos). [You can probably relate, due to your FPGA experience]

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • FractalAsm-Linux

    x86 assembly language (with GUI in C) Mandelbrot and Julia fractal program (Linux)

  • Nice work and interesting route. My Mandelbrot route was (IIRC) [machine/OS then language] IBM XT CGA Turbo Pascal, Sun 3/260 Unix Pascal with SunCORE, Masscomp/Chromatics graphics box Unix C with GKS, Sun 3/260 Unix C with SunCORE, Amiga C, Pentium PC VGA C, Pentium PC Windows C, My own CPU and computer design Assembly, and finally Pentium PC Windows/Linux Assembly (with C for GUI part). If you want to see my Windows/Linux assembly code (basic x86 assembly) here's the links: https://github.com/mrmcsoftware/FractalAsm (for Windows) https://github.com/mrmcsoftware/FractalAsm-Linux (for Linux) . And if you want to see it running on my own CPU and computer design (via simulator), view my video https://www.youtube.com/watch?v=ygf0aa1r3NY (part of a series of videos). [You can probably relate, due to your FPGA experience]

  • GAPFixFractal

    A program to generate pictures of Mandelbrot or Julia sets, using arbitrary precision arithmetic on CUDA GPUs.

  • I have a program that does this, using the GPU instead of SSE or AVX: https://github.com/bernds/GAPFixFractal

  • futhark

    :boom::computer::boom: A data-parallel functional programming language

  • Really cool work. Would be interested on your take on Futhark.

  • utils

    Short shell/perl/python utils I wrote that I use every day. (by ttsiodras)

  • And finally, to avoid thermal throttling issues and make the experiments repeatable, I wrote a script to wait for the CPU to cool down BEFORE running.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts