我开发的软件通常包括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] 举报,一经查实,本站将立刻删除。