如何提前知道如果创建矩阵将耗尽内存?

2次浏览(过去30天)
我需要创建一个大小为N × M的矩阵作为脚本的一部分,其中N和M是脚本的输入。
这样我就知道了N和M,然后根据它们的大小选择下面三种方法之一:
i)当N和M足够小时,我想创建一个gpu矩阵,相关矩阵将适合gpu而不会产生内存不足的错误。
ii)当N和M太大时,我想在cpu上创建矩阵。
iii)如果N和M太大,我将耗尽cpu上的内存,那么我想在cpu上创建一个稀疏矩阵。
有没有一种方法,一旦我知道了N和M,来检验矩阵是否可以创建?
[我可以使用'try-catch-end',与尝试只是错误时,创建一个矩阵太大的内存,但我更喜欢一些更干净的东西,因为我怀疑运行时做一个矩阵的try-catch太大的内存是浪费]

接受的答案

雷蒙德·诺里斯
雷蒙德·诺里斯 2021年12月21日
看看 内存 命令,但它只适用于Windows操作系统。的 gpuDevice 命令将返回 AvailableMemory GPU的。这可以让你开始。记住对它进行操作所需的内存(例如,添加矩阵, fft 等)。有几个矩阵的GPU会占用多少内存,这可能会让你大吃一惊。
2的评论
雷蒙德·诺里斯
雷蒙德·诺里斯 2021年12月21日
试一试
sz = N * M *单位大小/ 1024 ^单位;
size-of-unit 取决于int8…Int64(即,1…8)和 单位 取决于MB或GB(即2或3)。例如,N,M双矩阵的大小以GB为单位为
sz = N * M * 8 / 1024 ^ 3;

登录评论。

更多答案(0)

标签

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!