微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么OpenGL和CUDA上下文是内存贪婪?

我开发的软件通常包括OpenGL和Nvidia CUDA SDK。最近我也开始寻求优化运行时内存占用的方法。我注意到下面的内容(Debug和Release版本只有4-7 Mb不同):

应用程序启动 – 总计小于1 Mb

OpenGL 4.5上下文创build(+ GLEW加载器初始化) – 总共45 Mb

CUDA 8.0环境(驱动程序API)共创build114 Mb

即使驱动程序没有完成IRP,同步I / O是否会被自动取消?

如何防止MMAPcaching值?

如何在UWP中获得操作系统版本

什么是应用程序的足迹,以及如何计算它?

为什么我会使用“service sshd reload”而不是“service sshd restart”?

如果我在“无头”模式下创buildOpenGL上下文,则GL上下文使用的是3 Mb,这可能会进入认的帧缓冲区分配。 这是有道理的,因为窗口大小是640×360。

所以在OpenGL和CUDA上下文之后,这个过程已经消耗了114Mb

现在,我对GL和CUDA上下文环境下的操作系统特定的东西没有深入的了解,但对于GL来说,45 Mb和CUDA的68 Mb对我来说似乎是一大堆东西。 我知道,通常几兆字节去系统帧缓冲区,函数指针,(可能大量的分配发生在驱动程序端)。 但是,只有“空白”的情况下达到100 MB以上看起来太多了。

我想知道:

为什么GL / CUDA上下文创build消耗如此大量的内存?

有没有方法来优化?

被测系统设置:Windows 10 64bit。 NVIDIA GTX 960 GPU(驱动程序版本:388.31)。 8 Gb RAM。 Visual Studio 2015,64位C ++控制台项目。

我使用Visual Studio内置的诊断工具 – >进程内存部分来测量内存消耗。

移动开发(Android和iOS)初学者需要指导

捕获窗口中的http / https请求

如何使OS日程安排磁盘最佳访问?

上下文切换的开销是多less?

stdout线程安全在Linux上的C?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐