首先,运行时和驱动层函数联合使用的话,需要加上动态库libcuda.so<windows下是cuda.lib>
其次,要使用cuMemGetInfo,不止是这一个驱动函数,而是所有的驱动函数使用之前, 必须都要先调用cuInit(0)函数;
然后, 在cuMemGetInfo之前,先调用cudaMalloc函数,随便分配什么东西都行,要不然cuMemGetInfo不知道要获取多少,this is silly, I know......
下面是例子:
void main()
{
CUresult uRet;
int *dn;
cudaMalloc((void **)&dn, 1 * sizeof(int));
uRet = cuInit(0);
printf("%d\n", (int)uRet);
size_t free;
size_t total;
uRet = cuMemGetInfo(&free, &total);
if(uRet == CUDA_SUCCESS)
printf("free = %d\n total = %d\n", free, total);
}
其次,要使用cuMemGetInfo,不止是这一个驱动函数,而是所有的驱动函数使用之前, 必须都要先调用cuInit(0)函数;
然后, 在cuMemGetInfo之前,先调用cudaMalloc函数,随便分配什么东西都行,要不然cuMemGetInfo不知道要获取多少,this is silly, I know......
下面是例子:
void main()
{
CUresult uRet;
int *dn;
cudaMalloc((void **)&dn, 1 * sizeof(int));
uRet = cuInit(0);
printf("%d\n", (int)uRet);
size_t free;
size_t total;
uRet = cuMemGetInfo(&free, &total);
if(uRet == CUDA_SUCCESS)
printf("free = %d\n total = %d\n", free, total);
}