Hi, forums
basically, i impletement adaptive particle refinement base on GPUSPH (basicall SPH fomula, MULTI-GPU and MULTI-NODE).
initial state, original example Bubble
about 5000 itterates
But, my code is very delicate, and mainly blame to verlet list.
my code is base on this article
according to this article, splited inactive particles have to project to its located active layer to find neibs, we can done it by localpos->globalpos->localpos(target layer). but the trouble is the neiblist we build is actually a relative offset (gridOffset) adding the offset from Cellstart, which means particleHash would never change till next BUILDNEIBS, however for splited inactive particles under APR framework, this requirement is not satisfied (once this happen, maybe illegal address), at least we store the data particleHash(project) , or, we store the absolute offset for each neibs, but clearly it requirement more memory usage (ushort->uint).
We can estimate the memory usage, for physical array (vel, pos, and so on), we only need no more than 300 bytes per particle, considering the multi-step scheme, triple it, 900bytes. Then, for neibslist, in 3D conditions, if we assumed 1 particle have 150 neibs, than 300 bytes for a single particle another words, almost 1/3 memory is unusable… then, a single GPU card can only simulate about 50 million particles even you use Tesla V100
Then, APR. if we split a single cell for 7 times, at the end it can generate more than 27*8^7 = 56,623,104…
and sure, not all have interest on such a large simulation (even me). But, that’s live…
so, i am trying to implement cell linked list.
at the end, i have a question
In particleSystem, all buffers have no state are in pool, is that right?