【问题标题】:Elapsed time of a CUDA programCUDA 程序的运行时间
【发布时间】:2013-01-23 14:24:34
【问题描述】:

这是我要计算经过时间的 CUDA 代码。我对 CUDA 很陌生,所以去尝试了一些 API,比如 .

      cudaEventRecord(stop, 0);
      cudaEventSynchronize(stop);
      float elapsedTime;
      cudaEventElapsedTime(&elapsedTime, start, stop);

但我不知道将这些语句放在下面的代码中,即我不知道如何安排这些代码。谁能指导我在代码中哪里可以插入这些语句?

        #include<stdio.h>
        #define N 512

     __global__ void add( int *a, int *b, int *c) 
       {
               *c= *a+ *b;
       }

      int main(void) 
       {
        int *a, *b, *c; // host copies of a, b, c
        int *dev_a, *dev_b, *dev_c; // device copies of a, b, c
        int size = N * sizeof(int); // we need space for 512 integers


        // allocate device copies of a, b, c
        cudaMalloc( (void**)&dev_a, size );
        cudaMalloc( (void**)&dev_b, size );
        cudaMalloc( (void**)&dev_c, size );

        a = (int*)malloc( size );
        b = (int*)malloc( size );
        c = (int*)malloc( size );

        //random_ints( a, N );
        //random_ints( b, N );

        // copy inputs to device
        cudaMemcpy( dev_a, a, size, cudaMemcpyHostToDevice);
        cudaMemcpy( dev_b, b, size, cudaMemcpyHostToDevice);

        // launch add() kernel with N parallel blocks
        add <<< N, 1 >>>( dev_a, dev_b, dev_c);

        // copy device result back to host copy of c
        cudaMemcpy( c, dev_c, size, cudaMemcpyDeviceToHost);

        free( a ); free( b ); free( c );

        cudaFree( dev_a);
        cudaFree( dev_b);
        cudaFree( dev_c);


      }

【问题讨论】:

    标签: cuda parallel-processing


    【解决方案1】:

    CUDA 事件的时间测量如下:

    假设您想测量内核add 的时间。

    cudaEvent_t start,stop;
    float elapsedTime;
    
    cudaEventCreate(&start);
    cudaEventCreate(&stop);
    cudaEventRecord(start,0);
    
    add <<< N, 1 >>>( dev_a, dev_b, dev_c);
    
    cudaEventRecord(stop,0);
    cudaEventSynchronize(stop);
    
    
    cudaEventElapsedTime(&elapsedTime,start,stop);
    
    cout<<"\n\nElapsed Time = "<<elapsedTime<<" milliseconds";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2018-12-27
      • 2021-10-31
      • 2012-04-03
      • 2012-05-03
      • 2016-03-09
      • 2021-03-01
      相关资源
      最近更新 更多