1 c cuda matrix dynamic-arrays
我正在尝试实施OSEM算法(我正在尝试,因为我必须,而不仅仅是为了好玩)我有一个问题:
由于我将使用非常大的矩阵,我想知道我可以用malloc分配的最大数组大小(C语言).根据我的阅读,它取决于您的操作系统和硬件:我正在使用Intel Xeon E5530 2.40 Ghz,Red Had Enterprise 64位,Nvidia Quadro FX 3800.
我将使用的矩阵有类似这些尺寸的东西:float/double 2000x1000x20.
鉴于这些矩阵要与CUDA C一起使用,我必须在一维数组中分配矩阵,如下所示:
float*matrix=(float*)malloc(sizeof(float)*2000*1000*20));
Run Code Online (Sandbox Code Playgroud)
提前致谢 ;)
这些是相对较小的分配 - 浮动大约160 MB,双倍大约320 MB.除非你同时拥有很多这些矩阵,否则应该没有问题.
主要的限制是CUDA,你可能会受到GPU卡上物理内存总量的限制,但除非你有大量的这些矩阵,否则你应该可以使用任何当前兼容CUDA的GPU卡.