2012-02-22 18 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

上記のように、これは私のために働いて、私に正しい情報をくれました。しかし、私はまた、別のデバイスでそれをテストし、負のメモリを持っているただ1つの "非現実的な"値を持っています:/いずれにしても[cuda lib documentation]をチェックしてください(http://developer.download.nvidia.com/compute/ DevZone/docs/html/C/doc/html/index.html)は、デバイスの照会を可能にする関数を探すのに適しています。ちなみに、あなたはそのデバイスで管理していますか?デバイスを照会する権利がない場合もありますか?これが正しければ確信していますが、ちょうど考えを書いています。実行可能ファイルをsudoしてみてください! – tropicana