完美获取N卡A卡的显存大小(使用OpenGL)
// 基于扩展NVX_gpu_memory_info extension
UINT QueryNVidiaCardMemory()
{
__try
{
int iVal = 0;
glGetIntegerv( GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, &iVal );
return (UINT)iVal/1024;
}
__except(1)
{
}
return 0;
}
// 基于扩展WGL_AMD_gpu_association
UINT QueryAmdCardMemory()
{
__try
{
typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT* ids);
typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void* data);
PFNWGLGETGPUIDSAMDPROC wglGetGPUIDsAMD = (PFNWGLGETGPUIDSAMDPROC)wglGetProcAddress("wglGetGPUIDsAMD");
PFNWGLGETGPUINFOAMDPROC wglGetGPUInfoAMD = (PFNWGLGETGPUINFOAMDPROC)wglGetProcAddress("wglGetGPUInfoAMD");
if( !wglGetGPUIDsAMD || !wglGetGPUInfoAMD )
{
return 0;
}
UINT n = wglGetGPUIDsAMD(0, 0);
UINT ids[24];
#define WGL_GPU_RAM_AMD 0x21A3
size_t TotalMemSize = 0;
wglGetGPUIDsAMD(n, ids);
wglGetGPUInfoAMD(
ids[0],
WGL_GPU_RAM_AMD,
GL_UNSIGNED_INT,
sizeof(size_t),
&TotalMemSize
);
return (UINT)TotalMemSize;
}
__except(1)
{
}
return 0;
}
UINT QueryDedicatedVideoCardMemory( bool bNvidiaCard, bool bAmdAtiCard )
{
__try
{
HWND hWnd = (HWND)你可以用的HWND;
HDC hdc = ::GetDC( hWnd );
if( hdc == NULL )
{
return 0;
}
PIXELFORMATDESCRIPTOR FormatDesc;
memset(&FormatDesc, 0, sizeof(PIXELFORMATDESCRIPTOR));
FormatDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);
FormatDesc.nVersion = 1;
FormatDesc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | /*PFD_SUPPORT_GDI|*/ PFD_DOUBLEBUFFER;
FormatDesc.iPixelType = PFD_TYPE_RGBA;
FormatDesc.cColorBits = 32;
FormatDesc.cDepthBits = 32;
// FormatDesc.cStencilBits = 0;
FormatDesc.iLayerType = PFD_MAIN_PLANE;
GLuint PixelFormat = ChoosePixelFormat( hdc, &FormatDesc );
if( PixelFormat == NULL )
{
return 0;
}
SetPixelFormat( hdc, PixelFormat, &FormatDesc );
HGLRC hContext = wglCreateContext( hdc );
if( hContext == NULL )
{
return 0;
}
__try
{
if( wglMakeCurrent( hdc, hContext ) )
{
if( bNvidiaCard )
{
return QueryNVidiaCardMemory();
}
else if( bAmdAtiCard )
{
return QueryAmdCardMemory();
}
}
else
{
return 0;
}
}
__finally
{
wglMakeCurrent( NULL, NULL );
::DeleteDC( hdc );
wglDeleteContext( hContext );
}
}
__except(1)
{
}
return 0;
}
完美获取N卡A卡的显存大小(使用OpenGL)的更多相关文章
- Nvidia显卡怎样查看显存大小及硬件相关信息
在电脑上安装Nvidia显卡驱动,平时也会通过Nvidia控制面板来查看显示显存位宽及宽带.显示显存容量和显示显存芯片信息等等,那么该如何查看Nvidia显存大小以及Nvidia硬件相关信息呢? 1. ...
- tensorflow 如何限制显存大小
Python在用GPU跑模型的时候最好开多进程,因为很明显这种任务就是计算密集型的. 用进程池好管理,但是tensorflow默认情况会最大占用显存,尽管该任务并不需要这么多,因此我们可以设置显存的按 ...
- AI换脸必备知识:如何查看显卡型号以及显存大小!
使用Deepfakes(AI换脸) 软件,拼的就是配置,耗的就是时间,考验的是耐心. 配置好了,时间就少了. 所以玩这种软件,硬核需求就是:配置,配置,配置. 我的电脑能跑这个软件么?也是很多新手的 ...
- C#获取电脑型号、系统版本、内存大小、硬盘大小、CPU信息
摘要 有时需要获取电脑的相关信息.这时可以通过调用windows api的方式,进行获取. 方法 可以通过在powershell中 通过下面的命令进行查询,然后可以通过c#调用获取需要的信息. gwm ...
- TensorFlow中的显存管理器——BFC Allocator
背景 作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 使用GPU训练时,一次训练任务无论是模型参数还是中间结果都需要占用大量显存.为了 ...
- (原)tensorflow中使用指定的GPU及GPU显存
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6591923.html 参考网址: http://stackoverflow.com/questions ...
- [Pytorch]深度模型的显存计算以及优化
原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...
- 深度学习中GPU和显存分析
刚入门深度学习时,没有显存的概念,后来在实验中才渐渐建立了这个意识. 下面这篇文章很好的对GPU和显存总结了一番,于是我转载了过来. 作者:陈云 链接:https://zhuanlan.zhihu. ...
- tensorflow中使用指定的GPU及GPU显存
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本文目录 1 终端执行程序时设置使用的GPU 2 python代码中设置使用的GPU 3 设置tensorflow使用的显 ...
随机推荐
- hdu 1258 Sum It Up(dfs+去重)
题目大意: 给你一个总和(total)和一列(list)整数,共n个整数,要求用这些整数相加,使相加的结果等于total,找出所有不相同的拼凑方法. 例如,total = 4,n = 6,list = ...
- JS绑定JavaScript事件
//onblur="onblurs(this)" // function onblurs(e) { // alert(e.value); // }
- Linux cp命令使用说明
Linux cp命令使用说明 --功能说明:复制目录或文件 --命令格式:cp [参数] <文件或目录> <文件或目录> --常用参数: -R 复制目录 -i 覆盖文件之 ...
- Arcengine,C#获得FeatureClass的坐标系ISpatialReference以及所在数据集名称
1: /// <summary> 2: /// 获得坐标系统 3: /// </summary> 4: /// <param name="pFeatureCla ...
- TCP协议学习记录 (三) Ping程序 RR选项 记录路由hop
一开始想直接在上个程序改,自己构造IP包头,但后来发现不行,微软不让干了,所以后来选用libcap库来收发包 代码写的很乱.. #pragma pack(4) #define ECHO_REQUEST ...
- JAVA可移植性广泛应用
一.JAVA作为一种编程语言:源代码可移植性 作为一种编程语言,JAVA提供了一种最简单同时也是人们最熟悉的可移植性–源代码移植.这意味着任意一个JAVA程序,不论它运行在何种CPU.操作系统或JAV ...
- 编译安装或者mysql启动时遇到的错误小记
编译安装遇到的错误:进入mysql目录 [root@localhost software]# cd mysql-5.6.19 [root@localhost mysql-5.5.11]# cmake ...
- 建站阿里云、amh主机面版
阿里云 Nginx+tomcat7+Mencached负载均衡集群配置 http://blog.csdn.net/zht666/article/details/38515147 apache2.2.1 ...
- JSTL和EL
JSTL和EL 1.EL表达式总是放在大括号里,而且前面有一个美元符前缀. person.name2.相似点:(1).都可以让我们在静态内蓉中插入动态信息.EL:室外温度是{emp}度 JSP:室外温 ...
- Java多线程基本概念
基本概念 线程与任务的概念不一样. 任务:通常是一些抽象的且离散的工作单元,比如在Web请求中,针对用户的请求需要返回相应的页面是一个任务,在Java中实现Runnable接口的类也是一个任务. 线程 ...