我對所有這些(本週開始)都很陌生,因此請友好:) 我需要了解我的內存如何分配到我的GPU卡上。我正在運行帶有6個內核的Intel Xeon CPU和一塊Tesla C2050 GPU卡。我如何找出全局,共享,本地,常量和紋理內存的大小? 我試過使用deviceQuery代碼,一些已經上傳,但在這一點上,我無法編譯任何cuda代碼。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