2012-02-22 5 views
1

저는이 모든 것을 처음부터 시작 했으므로 친절 하답니다. 내 메모리가 GPU 카드에 어떻게 분산되어 있는지 알아야합니다. 나는 6 개의 코어와 Tesla C2050 GPU 카드를 장착 한 Intel Xeon CPU를 사용하고 있습니다. 전역, 공유, 로컬, 상수 및 텍스처 메모리의 크기를 어떻게 알 수 있습니까? 일부는 업로드 한 deviceQuery 코드를 사용해 보았습니다. 그러나이 시점에서 나는 어떤 cuda 코드도 컴파일 할 수 없습니다.GPU 메모리 분포

미리 감사

+1

카드 자체는 아무 것도 잊어 버리십시오. CUDA 코드를 컴파일 할 수 없다면 그 단계가 필요합니다. 1. Linux 또는 Windows를 실행하고 있습니까? – pg1989

답변

2
#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 찍은 (약간 수정)된다. 그것은 나를 위해 작동합니다. 컴파일 할 때 어떤 오류 메시지가 나타 납니까?

+0

제공된 코드를 컴파일하고 실행했습니다. 실행시 7798885 개의 CUDA 장치를 수확 할 수 있다고 말합니다. 6 코어와 2 GPU (Telsga C2050 - 448 코어, Quadro 600 - 96 코어) 만 있습니다. 솔직히 말해서 나는이 코드가 제공 한 값을 실제로 믿지 않는다. --- 장치 0 --- 이름에 대한 일반 정보하십시오 계산 능력 : 1993949441.0 클럭 속도 : 0 장치 복사 중복 : 장애인 커널 실행 시간 제한 : 사용 --- 장치 0의 메모리 정보 --- 총 글로벌 mem : 0 총 상수 Mem : 33751040 –

+0

언급 한 바와 같이, 이것은 나를 위해 일한 정확한 정보를 주었다. 그러나 나는 또한 다른 장치에서 그것을 테스트하고 내가 부정적인 기억을 가지고있는 단지 하나의 "비현실적인"가치를 가지고있다 :/어떤 경우에는, [cuda lib 문서를 체크 아웃한다.] (http://developer.download.nvidia.com/compute/ DevZone/docs/html/C/doc/html/index.html)은 장치를 쿼리 할 수있는 함수를 찾기 시작할 수있는 좋은 곳입니다. 그건 그렇고, 당신은 장치에서 관리하고 있습니까? 장치를 쿼리 할 권한이없는 경우가있을 수 있습니까? 비록 이것이 정확하다면, 다만 생각을 쓰는 지 확실하지 않습니다. 실행 파일을 sudo로 실행하십시오! – tropicana