KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am working on a program which manipulates images of different sizes. Many of these manipulations read pixel data from an input and write to a separate output (e.g. blur). This is done on a per-pixel basis. Such image mapulations are very stressful on the CPU. I would like to use multithreading to speed things up. How would I do this? I was thinking of creating one thread per row of pixels. I have several requirements: Executable size must be minimized. In other words, I can't use massive libraries. What's the most light-weight, portable threading library for C/C++? Executable size must be minimized. I was thinking of having a function forEachRow(fp* ) which runs a thread for each row, or even a forEachPixel(fp* ) where fp operates on a single pixel in its own thread. Which is best? Should I use normal functions or functors or functionoids or some lambda functions or ... something else? Some operations use optimizations which require information from the previous pixel processed. This makes forEachRow favorable. Would using forEachPixel be better even considering this? Would I need to lock my read-only and write-only arrays? The input is only read from, but many operations require input from more than one pixel in the array. The ouput is only written once per pixel. Speed is also important (of course), but optimize executable size takes precedence. Thanks. More information on this topic for the curious: C++ Parallelization Libraries: OpenMP vs. Thread Building Blocks
Tags (comma-separated)
Save Edits
Cancel