Which version of the Project Chrono has the current GPUSPH 4.1 has been validated for? I cannot seem to find this piece of information in the website: please do not hesitate to point me in the right direction if I missed something obvious.
Hello, and thanks for your interest in GPUSPH.
When GPUSPH 4.1 was released, the Chrono integration had been designed against the at-the-time
develop branch of Chrono (which is why no explicit version is mentioned). However, you should be able to run it against Chrono v3.
I’ve done some quick testing using Chrono v4, and there doesn’t seem to have been any changes in the Chrono API in the parts used by the GPUSPH core or sample problems (user problems may be using other parts of Chrono that may have changed though).
In our experience, when using GPUSPH with Chrono, the biggest obstacle (aside from eventual changes in the Chrono API) is in making sure that both GPUSPH and Chrono are built with the same compiler and using the same ABI (and in particular the same C++ version).
In particular, this means that the compiler used to build Chrono must also be supported by the version of
nvcc used to build (the device part of) GPUSPH, even when not using the CUDA support of Chrono.
GCC 4.9 is a pretty robust solution (should be supported in most configurations). More recent versions of GCC will most probably require a very recent version of CUDA (see also the ongoing discussion in this thread).
Please let us know if this information is sufficient, we’ll try to update the GPUSPH install guide accordingly.
Thanks for the answer.
Another question then follows: does the implementation of Project Chrono for GPUSPH support parallelism on a GPU?
In other words, are simulations requiring SPH and fluid-structure interaction run concurrently on the GPU? Or is perhaps the case that SPH is solved on the GPU, the FSI is solved on the CPU, and that information is transferred between the two compute devices at regular intervals?
The way it is implemented now is that GPUSPH solves the fluid part with SPH on GPU, and during the forces computation phase also determines the force and torque acting on each rigid body.
The rigid body motion is then determined on CPU with Chrono, and during the integration phase the boundary particles are moved according to the Chrono solution.
So there is a download and an upload per integration (and the predictor-corrector scheme does two integrations per step). We have not looked into using Chrono’s own CUDA support yet. This would reduce the data transfers, assuming Chrono could be made to use the same buffer GPUSPH uses for the forces and torques.
Clear answer. Thanks.