Reorganizing current data structure in order to take advantage of GPU
3 views (last 30 days)
I currently have nested structures like
myStructreadIn(var1).NestedLevel1(var2)NestedLevel2(var3).dat(vector); Step (1)
I would like to use Matlab's gpu parallization support, and for that I know data must be optimally structured. Also, I know that gpu use doesn't always make sense, and that CPU parallelization is often better. In my case, I am taking a bunch of fft's and I understand from reading that GPU 'could' be a good way to go, by making gpuArrays and take fft's columnwise.
I also know that nested structures are not good for gpu. Is there a way I can reorganize this nested strucuture, eg
- Is it gpu-paradigmatic to organize this nested structure data instead in a really large matrix, in order to vectorize it?
- I also take xcorr of data after re-shuffling the nested levels, in order to get the correct (x-dir, y-dir, z-dir), then take fft in another direction
Joss Knight on 15 Apr 2022
Evidently with your nested structure you are not required to have uniform data - every element at each level can have a different size of sub-level, whereas if you reorganise as an array everything has to be the same. But yes, if you can reasonably rearrange your data structure as a multi-dimensional array you will gain an advantage on the GPU (and on CPU).