相关文章推荐
豪情万千的橙子  ·  arduino esp8266 ...·  4 月前    · 
温文尔雅的火龙果  ·  python ...·  1 年前    · 
cudaDeviceProp prop; for (i = 0 ; i < count; i++ ) { if (cudaGetDeviceProperties(&prop, i) == cudaSuccess) { if (prop.major >= 1 ) { break ; if (i == count) { printf( " 找不到支持CUDA的设备!\n " ); return false ; cudaGetDeviceProperties( &prop, 0 ); printf( " GPU is: %s\n " , prop.name); cudaSetDevice( 0 ); printf( " CUDA initialized success.\n " ); return true ; // 使用指针相加 __global__ void addNumber( double a, double b, double * c); int main(){ // 检测GPU if (! CheckCUDA()){ cout << " No CUDA device. " ; return 0 ; cout << " ************************************************************************************************************* " << endl; double h_a, h_b, h_c; // 在CPU上定义三个变量 double *d_c; // 定义一个将指向GPU的指针 h_a = 2.2 ; h_b = 3.3 ; cudaMalloc(( void **)&d_c, sizeof ( double )); // 为指针在GPU上分配内存空间
// 调用核函数并启用一个线程块和一个线程
addNumber<<< 1 , 1 >>>(h_a, h_b, d_c); // 只是单独的两个数相加,不是两个数组相加,只需使用单线程,数组相加可以使用多线程 cudaMemcpy(&h_c, d_c, sizeof ( double ), cudaMemcpyDeviceToHost); // 将GPU上计算好的结果返回到CPU上定义好的变量 // setw(10)表示输出10个空格,需添加 #include <iomanip> cout << setw( 10 ) << h_a << " + " << h_b << " = " << h_c << endl; cout << endl << endl; system( " pause " ); return 0 ; __global__ void addNumber( double a, double b, double * c){ *c = a + b;

显示结果如下