|
|
I am considering writing a some code to accellerate POVRay by use of FPGA
hardware. I have access to a variety of FPGA systems (and some saweeet
buses). What would be beautiful to me is if there was just one function
that looked like this:
byte* UseLotsOfProcessor(byte* bigchunk1, bigchunk2, other params....){
do lost of math in not too many lines of code
return a big piece of data
}
Then I could just write my own copy of that function that executed in
hardware. Somehow I don't think it is that easy. How do the SMP utilities
do such things? Is there a subset of functions they overload? Where would I
find this list?
Thanks for your time,
Brannon
Post a reply to this message
|
|
|
|
POV-Ray is mostly made up of medium-sized, math-intensive functions that
(individually) operate on relatively small sets of data.
Some of the image and resource parsing functions may qualify for the
optimization you wish to perform, but this is unlikely to have much
effect on the trace time of a typical scene.
-Ryan
Post a reply to this message
|
|
|
|
Your best bet is probably to run a profiler on povray on a number of
different scenes and see where the performance bottlenecks are. Gprof
or oprofile would probably suit your needs (assuming Linux). Once you
know where most of the CPU time is being spent, then you'll know where
to start.
I suspect that this will vary greatly from scene to scene, some scenes
will spend a lot of time processing textures, some will spend a lot of
time resolving mathematical functions (especially those with
isosurfaces), some will spend a lot of time tracing objects. I suspect
that this will involve a lot more effort than you imagine, so it would
be worthwhile getting very familiar with the source code before you
consider hardware accelerating it.
Peter D.
Brannon wrote:
> I am considering writing a some code to accellerate POVRay by use of FPGA
> hardware. I have access to a variety of FPGA systems (and some saweeet
> buses). What would be beautiful to me is if there was just one function
> that looked like this:
>
> byte* UseLotsOfProcessor(byte* bigchunk1, bigchunk2, other params....){
> do lost of math in not too many lines of code
> return a big piece of data
> }
>
> Then I could just write my own copy of that function that executed in
> hardware. Somehow I don't think it is that easy. How do the SMP utilities
> do such things? Is there a subset of functions they overload? Where would I
> find this list?
>
> Thanks for your time,
> Brannon
>
>
Post a reply to this message
|
|