cudaDeviceReset für mehrere gpu ' s

Ich arbeite derzeit an einem gpu-server mit 4 Tesla T10 gpu ist. Während ich weiter testen, der Kernel und oft töten die Prozesse mit Strg-C), habe ich ein paar Zeilen an das Ende der ein einfaches Gerät-Abfrage-code. Der code ist unten angegeben :

#include <stdio.h>

 //Print device properties
 void printDevProp(cudaDeviceProp devProp)
{
    printf("Major revision number:         %d\n",  devProp.major);
    printf("Minor revision number:         %d\n",  devProp.minor);
    printf("Name:                          %s\n",  devProp.name);
    printf("Total global memory:           %u\n",  devProp.totalGlobalMem);
    printf("Total shared memory per block: %u\n",  devProp.sharedMemPerBlock);
    printf("Total registers per block:     %d\n",  devProp.regsPerBlock);
    printf("Warp size:                     %d\n",  devProp.warpSize);
    printf("Maximum memory pitch:          %u\n",  devProp.memPitch);
    printf("Maximum threads per block:     %d\n",  devProp.maxThreadsPerBlock);
    for (int i = 0; i < 3; ++i)
    printf("Maximum dimension %d of block:  %d\n", i, devProp.maxThreadsDim[i]);
    for (int i = 0; i < 3; ++i)
    printf("Maximum dimension %d of grid:   %d\n", i, devProp.maxGridSize[i]);
    printf("Clock rate:                    %d\n",  devProp.clockRate);
    printf("Total constant memory:         %u\n",  devProp.totalConstMem);
    printf("Texture alignment:             %u\n",  devProp.textureAlignment);
    printf("Concurrent copy and execution: %s\n",  (devProp.deviceOverlap ? "Yes" : "No"));
    printf("Number of multiprocessors:     %d\n",  devProp.multiProcessorCount);
    printf("Kernel execution timeout:      %s\n",  (devProp.kernelExecTimeoutEnabled ? "Yes" : "No"));
    return;
}

 int main()
{
    //Number of CUDA devices
    int devCount;
    cudaGetDeviceCount(&devCount);
    printf("CUDA Device Query...\n");
    printf("There are %d CUDA devices.\n", devCount);

    //Iterate through devices
    for (int i = 0; i < devCount; ++i)
    {
        //Get device properties
        printf("\nCUDA Device #%d\n", i);
        cudaDeviceProp devProp;
        cudaGetDeviceProperties(&devProp, i);
        printDevProp(devProp);
    }

    printf("\nPress any key to exit...");
    char c;
    scanf("%c", &c);

    **for (int i = 0; i < devCount; i++) {
        cudaSetDevice(i);
        cudaDeviceReset();
    }**

    return 0;
}

Meine Anfrage ist im Zusammenhang mit der for-Schleife vor dem main() endet, in der ich jedes Gerät einzeln aus, und verwenden Sie dann cudaResetDevice Befehl. Ich bekomme ein komisches Gefühl, dass dieser code, obwohl nicht produzieren keine Fehler, aber ich bin nicht in der Lage zurücksetzen, um alle Geräte. Anstatt, das Programm setzt nur das Standard-Gerät, das ich.e-Gerät 0 und das jedes mal. Kann mir jemand sagen, was sollte ich tun, um die reset-jedes der 4 Geräte.

Dank

InformationsquelleAutor Abhinav | 2011-08-22
Schreibe einen Kommentar