Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kurtamohler/mandelbrot-opencl
Mandelbrot set viewing application with high frame-rate to enable real-time exploration
https://github.com/kurtamohler/mandelbrot-opencl
Last synced: 11 days ago
JSON representation
Mandelbrot set viewing application with high frame-rate to enable real-time exploration
- Host: GitHub
- URL: https://github.com/kurtamohler/mandelbrot-opencl
- Owner: kurtamohler
- Created: 2019-10-22T03:19:36.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2019-11-10T23:51:59.000Z (almost 5 years ago)
- Last Synced: 2024-10-13T05:42:32.373Z (26 days ago)
- Language: C++
- Size: 64.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# mandelbrot-opencl
Mandelbrot set viewing application with high frame-rate to enable real-time exploration## Dependencies
* OpenCL
* SFML
* A compute device compatible with OpenCL (run clinfo to check)## Build
```
$ make
```## Run
```
$ ./mandel
```## Performance
Since this application is meant to allow you to explore the Mandelbrot set in real time, some performance measurements are needed.Currently, the default application reaches an average of 58 fps on my laptop, which has an integrated "Intel(R) HD Graphics Kabylake Desktop GT1.5" GPU, running OpenCL 2.0 Beignet 1.3.
Performance depends on which part of the Mandelbrot set is in view, and how many iterations are performed for each pixel on the screen. By default, almost the entire set is in view, and up to 1024 iterations are performed.
## Areas for improvement
The biggest potential improvement that I have found is in the method I am using to display the Mandelbrot set to the screen. Once a buffer of divergence iterations counts for each pixel is returned from the OpenCL kernel, I'm using the CPU to loop through each of these values and convert them into colors. This could certainly be sped up significanly with a second OpenCL kernel.