Here's the situation. We have a fairly standard Rails 3.1 app that is focused on image manipulation and we're using ImageMagick 6.6.2 & RMagick 2.13.1 to get the job done. Under Linux (CentOS 5.4 / Ubuntu 11.04 / OS X Lion) with OpenMP compiled into the system we can render a single image in 0.5ms. Trying to process 10-100 simultaneously causes the CPUs to completely load up and the IM performance plummets. I want to be able to keep threading enabled and scale the number of simultaneous image processes linearly with the number of CPU cores available.
Here are the rules:
- the code must be integrated back into the ImageMagick code base. This ensures that the code is proper and well constructed and that it will be maintained and used by others.
- the code must be generic and multi-platform. You can't "cheat" and only speed up certain processes when run on 8-way Amazon AWS machines running Linux 3.1 (for example).
- the performance jump must be significant. I don't have exact numbers but I would expect to at least double the performance of IM over the current implementation on multiple cores. A 1-2% performance increase is not going to cut it.
If this looks like something you would be interested in, respond to this message and let me know what you think.
Thanx!
Richard