在Visual Studio 2017中,如何使GPU处理比使用CUDA 10.0的CPU处理快得多?

时间:2018-11-19 09:33:13

标签: c++ cuda gpu nvidia gpgpu

聪明的开发者! 我是CUDA编程的初学者,我的代码有很大的问题。

以下代码是Nvidia的示例代码,我做了一些改动,以显示GPU进程比CPU进程快得多。但是,在编译这段代码后,我从CPU进程比GPU进程要快得多的结果中得到了意外的结果。

This is my laptop gpu info.

这是我对Visual Studio 2017的cuda代码。

================================================ ==========================

30001 <= int(vermogen) <= 100800

这是GPU进程中的add2 function()

#define N 10

这是CPU进程的add function()

`___global____  void add2(int *a, int *b, int *c) {`

    // GPU block from grid sector
    //int tid = blockIdx.x;     // checking the data of index  = if you 

insert min of N, you will get slow result from CPU. But if you put big number, this show much faster than CPU

// GPU thread
//int tid = threadIdx.x;    // Same result as blockIdx.x

// GPU unexpected vector    // Same result as above
int tid = threadIdx.x + blockIdx.x*blockDim.x;
if (tid < N) {
    c[tid] = a[tid] + b[tid];
}
}

这是Main function()

`void add(int *a, int *b, int *c) {

    int tid = 0;

while (tid < N) {
    c[tid] = a[tid] + b[tid];
    tid += 1;
}
}

This is result of compiling this code.

我想使GPU处理比CPU处理快得多。

1 个答案:

答案 0 :(得分:1)

运行单个操作的GPU通常实际上比CPU慢。此外,将数据发送到GPU并再次读回它需要花费时间。

GPU的优势在于它可以并行执行许多操作。

正如您将N定义为10一样,上载和下载数据可能比在CPU上执行花费更长的时间。为了了解GPU的优势,您可以将问题的大小扩大到更大。理想情况下,在开始看到一些好处之前,您希望在每个GPU内核上至少执行几个操作。例如,使用GPU的1280个内核,您希望一次执行4000次或更多操作,以获得GPU的好处。