I have to create the following global matrix
float m[20][2000][1024][200]
that will occupy approximately 26 GB of RAM and this is not a problem.
I'm able to do it in GNU\Linux operating systems. How can I do it in Windows? Why does Windows impose this very annoying array dimension limitation?
One solution could be to allocate a single array in the heap and compute the 1d-index but I would prefer if it was the compiler to do it.
It is a dense matrix used in a dynamic programming algorithm and for performance purposes I would prefer contiguous memory for caching.
Any idea?
== UPDATE==
I'd like to post a solution that I eventually found. A possibility is as follows:
float (*m)[2000][1024][200];
m = malloc (20 * sizeof *m);
Memory is contiguous and could be accessed using the matrix access way.