Right now, for each particle the EoS have some internal datamembers updated and these are used in the root finding algorithm. This is not a good approach in a parallel setting in general because:
Either we will have to create nparticles objects which will very memory hungry. This may be specially bad if in device the memory is a constraint (like some GPUs).
Let the update of thermodynamic properties happens in a serial way. If we follow this way, there will be some memory coping from device to host so the host has access to the latest values of entropy and charge densities and then the thermo updates back to device. These data transfer may be a bottle neck (in addition to the computation EoS inversion itself), specially if device and host are physically different from one another.
It is worth mentioning that both options requires some rework to make it compatible with the new code version. At which point, it may be worth to slightly change the design for it to not rely on the internal status of its datamembers.
Right now, for each particle the EoS have some internal datamembers updated and these are used in the root finding algorithm. This is not a good approach in a parallel setting in general because:
nparticles
objects which will very memory hungry. This may be specially bad if in device the memory is a constraint (like some GPUs).It is worth mentioning that both options requires some rework to make it compatible with the new code version. At which point, it may be worth to slightly change the design for it to not rely on the internal status of its datamembers.