[Sidefx-houdini-list] HDK : fastest way to update lots of points ?

Edward Lam edward at sidefx.com
Wed Apr 27 09:21:00 EDT 2011

Hi Vincent,

Have you looked at separate timings for your call to cudaMemcpy() vs the 
FOR_ALL_GPOINTS() loop? I would expect that the cudaMemcpy() call would 
dominate the FOR_ALL_GPOINTS() loop.

Currently, point position objects (ie. GEO_Point) are not necessarily 
arranged in a contiguous fashion in memory so copying from a contiguous 
array of point positions will necessarily be slower than optimal. The 
best you can do right now is probably be something like:


The performance difference will likely be negligible though because the 
compiler will probably optimize away the UT_Vector4 construction anyhow. 
I recommend using GEO_Point::setPos() regardless though since the HDK 
usage for modifying points using getPos() will be removed in the next 
major release of Houdini.


On 4/26/2011 7:29 PM, Vincent Houzé wrote:
> Hi,
> I'm making a particles system plugin with cuda.
> Example vids : http://www.vimeo.com/22916953
> As long as everything stays on the GPU, it's really fast as expected,
> but copying the points positions to Houdini points slow things quite a
> bit. Right now I'm doing
> cu::cudaMemcpy( particlesSystem->host_pos, particlesSystem->dev_pos,
> 	particlesSystem->nParts*sizeof(cu::float3), cu::cudaMemcpyDeviceToHost );
> GEO_Point* ppt;
> int i = 0;
> UT_Vector4		p;
> FOR_ALL_GPOINTS(gdp, ppt) {
> ppt->getPos() =
> UT_Vector4(particlesSystem->host_pos[i*3],particlesSystem->host_pos[i*3+1],
> particlesSystem->host_pos[i*3+2], 1);
> i++;
> }
> and the for loop is taking a lot of time for a few millions particles.
> In the help, for attributes, there is mention of:
> set<T>(const GB_AttributeRef&h, const T *array, int count)
> Set an array of data all at once
> Examples:
>          float   life[2];
>          ppt->set<float>(life_id, life, 2);
> but I couldn't find anything similar for points positions.
> Thanks a lot for any help,
> Vincent
> _______________________________________________
> Sidefx-houdini-list mailing list
> Sidefx-houdini-list at sidefx.com
> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list

More information about the Sidefx-houdini-list mailing list