GPU内存分配
我对所有这些(本周开始)都很陌生,因此请友好:) 我需要了解我的内存如何分配到我的GPU卡上。我正在运行带有6个内核的Intel Xeon CPU和一块Tesla C2050 GPU卡。我如何找出全局,共享,本地,常量和纹理内存的大小? 我试过使用deviceQuery代码,一些已经上传,但在这一点上,我无法编译任何cuda代码。GPU内存分配
由于事先
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
int main(void) {
cudaDeviceProp prop;
int count;
cudaGetDeviceCount(&count);
printf("This machine has %d CUDA devices availiable for harvesting \n\n", count);
for (int i=0; i< count; i++) {
cudaGetDeviceProperties(&prop, i);
printf(" --- General Information for device %d ---\n", i);
printf("Name: %s\n", prop.name);
printf("Compute capability: %d.%d\n", prop.major, prop.minor);
printf("Clock rate: %d\n", prop.clockRate);
printf("Device copy overlap: ");
if (prop.deviceOverlap)
printf("Enabled\n");
else
printf("Disabled\n");
printf("Kernel execution timeout : ");
if (prop.kernelExecTimeoutEnabled)
printf("Enabled\n");
else
printf("Disabled\n");
printf(" --- Memory Information for device %d ---\n", i);
printf("Total global mem: %ld\n", prop.totalGlobalMem);
printf("Total constant Mem: %ld\n", prop.totalConstMem);
printf("Max mem pitch: %ld\n", prop.memPitch);
printf("Texture Alignment: %ld\n", prop.textureAlignment);
printf(" --- MP Information for device %d ---\n", i);
printf("Multiprocessor count: %d\n",
prop.multiProcessorCount);
printf("Shared mem per mp: %ld\n", prop.sharedMemPerBlock);
printf("Registers per mp: %d\n", prop.regsPerBlock);
printf("Threads in warp: %d\n", prop.warpSize);
printf("Max threads per block: %d\n",
prop.maxThreadsPerBlock);
printf("Max thread dimensions: (%d, %d, %d)\n",
prop.maxThreadsDim[0], prop.maxThreadsDim[1],
prop.maxThreadsDim[2]);
printf("Max grid dimensions: (%d, %d, %d)\n",
prop.maxGridSize[0], prop.maxGridSize[1],
prop.maxGridSize[2]);
printf("\n");
}
}
的代码从Cuda by Example取出(并稍微修改)。这个对我有用。当你尝试编译时会得到什么错误信息?
我编译并运行了提供的代码。一旦执行它说,我有7798885 CUDA设备可用于收获。我只有6个内核和2个GPU(Telsga C2050 - 448内核,Quadro 600 - 96内核)。说实话,我真的不相信这个代码提供的任何值。 ---对于设备0 --- 名称一般资料:一 计算能力:1993949441.0 时钟率:0 设备复制重叠:残疾人 内核执行超时:启用 ---用于设备0内存信息--- Total global mem:0 Total constant Mem:33751040 – 2012-03-07 05:50:22
如上所述,这对我有效,并给了我正确的信息。但我也在另一台设备上测试过它,并得到了一个“不真实”的值,我有负面的记忆:/在任何情况下,检查[cuda lib文档](http://developer.download.nvidia.com/compute/ DevZone/docs/html/C/doc/html/index.html)将会是一个很好的开始寻找可以让你查询设备的函数的地方。顺便说一下,你是否在设备管理。可能是您没有查询设备的权利的情况?不知道如果这是正确的,只是写一个想法。尝试sudo运行可执行文件! – tropicana 2012-03-24 22:04:56
忘掉任何与卡本身有关的事情 - 如果你不能编译CUDA代码,那需要你的第一步1.你正在运行Linux还是Windows? – pg1989 2012-02-22 03:57:30