当我使用cudaMalloc(100)时,它保留了100多个B(根据一些用户在这里,这是由于粒度问题和家务管理信息造成的)有没有办法知道cudaMalloc要保留多少空间?
是否有可能确定这个空间有多大将基于字节I需要保留
谢谢你这么多
编辑:?我会解释为什么我需要知道
我想申请在GPU上的巨大图像卷积算法来做到这一点。 ,因为GPU上没有足够的内存来保存它,所以我需要分割b中的图像行的多次调用内核几次。
事实上,我需要发送2个图像,OnlyRead矩阵和Results矩阵。
我想根据可用内存的大小先验地计算出可以发送到设备的最大行数。
第一个cudaMalloc成功执行,但是在尝试执行第二个CudaMalloc时出现问题,因为第一个预留占用了比预期更多的Bytes。
我在做什么,现在正在考虑的可用内存数量比它是什么少10%......但是这仅仅是从哪儿来一个神奇的数字..
[This](http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#device-memory-accesses)可能是有益的:“任何驻留在全球的变量的地址内存或由驱动程序或运行时API的内存分配例程之一返回的内存总是至少与256字节对齐。“因此,我希望任何分配请求至少“用尽”到下一个更高的256个字节的倍数。话虽如此,AFAIK对你的问题的答案没有明确说明,所以试图发现它是什么,然后依赖它可能是有风险的。 – 2014-11-08 17:53:24
@RobertCrovella我知道为什么“甚至是256个字节的倍数”?为什么不至少使用256的下一个倍数? – Farzad 2014-11-08 18:01:38
此[此帖子](http://stackoverflow.com/questions/14082964/cuda-alignment-256bytes-seriously)是相关的。 – Farzad 2014-11-08 18:01:59