CUDA

View: New views
2 Messages — Rating Filter:   Alert me  

CUDA

by Evan Lezar :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi

I have been struggling a little to get my head around the implementation of a CUDA Version of the SubdivideEdges plugin - it just doesn't want to sort itself out in my head.

To take a little break, I decided to implement another image processing plugins - Gamma - and have included tests and benchmarks.  I have also generated graphs sumarising the bitmap plugin benchmark results (see the results for bitmap.modifier.BenchmarkComparison on the dashboard).

Regarding the edge subdivision plugin, I think that the problem is that I am trying too hard to stick to the current division of tasks (the classes in the detail namespace) and I should instead rewrite the entire plugin in cuda.  The one problem I can see with this is that the resultant mesh may not have identical indices although the structures could be identical.  How much of a problem is this.  How is the difference between two meshes calculated?  I assume from the k3d::mesh_diff output that each record is compared element-wise?

I look forward to your comments and suggestions.

Evan

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
K3d-development mailing list
K3d-development@...
https://lists.sourceforge.net/lists/listinfo/k3d-development

Re: CUDA

by bART Janssens-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, Jul 9, 2008 at 11:32 PM, Evan Lezar <evanlezar@...> wrote:
> To take a little break, I decided to implement another image processing
> plugins - Gamma - and have included tests and benchmarks.  I have also
> generated graphs sumarising the bitmap plugin benchmark results (see the
> results for bitmap.modifier.BenchmarkComparison on the dashboard).

I'll check it out. Taking a break like this is often a good idea!

> Regarding the edge subdivision plugin, I think that the problem is that I am
> trying too hard to stick to the current division of tasks (the classes in
> the detail namespace) and I should instead rewrite the entire plugin in
> cuda.  The one problem I can see with this is that the resultant mesh may

I've tried to write the array implementation with CUDA in mind, but
that's no guarantee, of course. In theory, everything except the
edge_index_calculator should run in parallel. For the
edge_index_calculator, you have to ensure it runs in sequence, or
think of some way to parallelize it, though that will require shared
data and synchronization (I doubt that's worth the effort. If you can
run this one serially on the GPU, do so!)

> not have identical indices although the structures could be identical.  How
> much of a problem is this.  How is the difference between two meshes
> calculated?  I assume from the k3d::mesh_diff output that each record is
> compared element-wise?

Unfortunately, that would be a problem. CUDA plugins, legacy plugins
and array plugins need to be completely interchangeable, and result in
the exact same index ordering for all mesh components. The only
acceptable difference is in the point positions, due to differences in
floating point calculations. The rationale is that in a pipeline,
plugins build on these indices, and if they are different for certain
plugin implementations, the rest of the pipeline will produce
unexpected results. In particular, when converting legacy plugins not
respecting this would break compatibility with existing documents.

For example, imagine two implementations of SubdivideFaces that result
in a different face order. If the next step is "extrude face 3", there
is no guarantee the correct face will be extruded when the plugins are
exchanged. Note that in the future, such an exchange may happen
automatically based on hardware detection.

Cheers,

--
Bart

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
K3d-development mailing list
K3d-development@...
https://lists.sourceforge.net/lists/listinfo/k3d-development
LightInTheBox - Buy quality products at wholesale price