User Tools

Site Tools


mandelbrot_notes

Synthesizing Mandelbrot over PCIe

Benchmark constraints for both pure SW and SW + Accelerator configurations:

  • Image size: 1000×1000 (we may need to get a bigger display to show both of these concurrently)
  • Number of iterations: 128. This generates a reasonably shaped mandelbrot set.

Without any polling of the FPGA, we can calculate the 100th iteration of the mandelbrot set correctly (without the FPGA taking too long).

With polling, we can calculate the 1000th iteration and more of the mandelbrot set.


Profiling of LegUp generated hardware

Naive implementation:

generate_set_sw took 3 microseconds
generate_set_hw took 96 microseconds
generate_set_sw took 4 microseconds
generate_set_hw took 84 microseconds
generate_set_sw took 3 microseconds
generate_set_hw took 76 microseconds
generate_set_sw took 4 microseconds
generate_set_hw took 68 microseconds

Code optimization to take constant multiplication out of generate_set:

generate_set_sw took 1 microseconds
generate_set_hw took 72 microseconds
generate_set_sw took 1 microseconds
generate_set_hw took 64 microseconds
generate_set_sw took 1 microseconds
generate_set_hw took 66 microseconds

Profile results of 'psychedelic' mandelbrot

These results are for a single 1k x 1k image with 2k iterations with the psychedelic colour scheme.

Software

Original: 2s
Multi-threaded (4+ threads): 1s

Hardware

Pixel by Pixel Acceleration (non-shared memory)

DMA interrupts

Original: 77s
16-threaded: 72s

DMA polling

Original: 48s
16-threaded: 48s

mandelbrot_notes.txt · Last modified: 2012/11/27 14:50 by zhangvi1