paravt icon indicating copy to clipboard operation
paravt copied to clipboard

Support for large dataset (64 bit integers)

Open cbyrohl opened this issue 6 years ago • 3 comments

Hi there,

I thought of paravt for analysing larger dataset distributed onto multiple nodes. However, it seems that this is limited to ~2 billion particles as relevant integers seem to be 4 byte. This might also be true for qhull. What would be the best way to extent paravt's capabilities to 64 bit? Are changes limited to paravt if each individual mpi instance holds less than 2 billion particles or would qhull need to be changed nonetheless?

Best,

cbyrohl avatar Sep 10 '18 14:09 cbyrohl

In the case you mention, each task using less than 2 billion particles, changes are only required in paravt code, not qhull(however it is possible to set there 64bit vars aswell). In particular variables which need to be replaced to 64 bit are numpart, localindex,globalindex,globalcount, and locind array. It means, change only the variables used for reading and writing the data to keep track of the global indices of particles.

regonzar avatar Sep 10 '18 17:09 regonzar

Thanks for the fast response. I changed: numpart, globalcount, locind and relevant counters such as istart,iend,irem,ii in savedata(). As I understand your code, localindex and globalindex are the array indices of the unique identifiers within one MPI instance (globalindex for the overall array, localindex for the buffer), so these can remain integers. Is that correct?

cbyrohl avatar Sep 10 '18 17:09 cbyrohl

the important array is locind which store the absolute index of particles, and this should be 64bit, the others are just counters. Key parts are in iovt.c, line 359 for reading and line 924, 1087 in write data.

regonzar avatar Sep 10 '18 18:09 regonzar