C# Windows 10 CUDA OpenGL互操作内存问题

C# Windows 10 CUDA OpenGL互操作内存问题,c#,c++,windows,opengl,cuda,C#,C++,Windows,Opengl,Cuda,从Windows 7切换到Windows 10后,我注意到调用cuGraphicsGLRegisterImage来注册OpenGL纹理现在占用了双倍内存。i、 创建200 MB的纹理后,寄存器调用将消耗400 MB的CUDA内存。我目前正在M2200 GPU上运行CUDA 8.0.61(带补丁2)和OpenGL 4.5 这不是Windows7在K2000和M2200 GPU上的情况,我在上面运行了这段代码 OpenGL上下文使用简单的硬件加速32位RGBA颜色、24位深度、8位模具、双缓冲像素格

从Windows 7切换到Windows 10后,我注意到调用
cuGraphicsGLRegisterImage
来注册OpenGL纹理现在占用了双倍内存。i、 创建200 MB的纹理后,寄存器调用将消耗400 MB的CUDA内存。我目前正在M2200 GPU上运行CUDA 8.0.61(带补丁2)和OpenGL 4.5

这不是Windows7在K2000和M2200 GPU上的情况,我在上面运行了这段代码

OpenGL上下文使用简单的硬件加速32位RGBA颜色、24位深度、8位模具、双缓冲像素格式,无需多采样

从中返回的可用内存量也似乎有所不同
glGetInteger(GL\u GPU\u MEMORY\u INFO\u CURRENT\u AVAILABLE\u VIDMEM\u NVX)
vs
cuMemGetInfo\u v2
随每次寄存器调用而增大


有人知道额外内存消耗的原因吗?是Windows 10/CUDA驱动程序吗?有没有一种方法可以解决这个问题或解决方法,这样我就不会在OpenGL/CUDA互操作中消耗双倍内存

在黑暗中拍摄:可能有内部填充。如果将纹理深度从32加倍到64会发生什么?我看不出为什么glGetInteger和cuMemGetInfo会返回相同的值。前者要求“专用视频内存,GPU内存的总大小(kb)”,后者要求“CUDA上下文可分配的可用内存总量,以字节为单位”。我没有尝试双纹理深度。我要试一试。但是,我确实注意到,如果我使纹理足够大,K2000上的256 MB和M2200上的512 MB会使加倍消失。我试过2的各种幂,但它似乎与这两种幂都不相关。我知道这两个函数不会返回相同的值(即使在转换过程中使用因子),但我希望可用内存量以相同的速度减少。我将颜色位的数量从32更改为64,这个问题没有消失。