Caffe docs:“使用多个分类线程来确保GPU始终得到充分利用”。怎么样?

时间:2016-05-02 20:39:30

标签: multithreading caffe

在“分类ImageNet:使用C ++ API”教程(http://caffe.berkeleyvision.org/gathered/examples/cpp_classification.html)的最后,我找到了这样的短语:

  

使用多个分类线程确保GPU始终完整   利用而不是等待I / O阻塞的CPU线程。

他们的意思是什么? 我理解正确,有一种方法可以在一个GPU上运行时为CPU层使用多个线程吗?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用CUDACUDNN在一个GPU上使用多个线程。

例如CUDA programming guide

以下代码添加了两个大小为NxN的矩阵A和B,并将结果存储到矩阵C中:

// Kernel definition
__global__ void MatAdd(float A[N][N], float B[N][N],
                       float C[N][N])
{
    int i = threadIdx.x;
    int j = threadIdx.y;
    C[i][j] = A[i][j] + B[i][j];
}

int main()
{
    ...
    // Kernel invocation with one block of N * N * 1 threads
    int numBlocks = 1;
    dim3 threadsPerBlock(N, N);
    MatAdd<<<numBlocks, threadsPerBlock>>>(A, B, C);
    ...
}