CUDA basic knowledge

物理概念、CUDA基本概念、CUDA语法、调试器、错误处理

cuda code error

thrust

[thrust::system::system_error]

1
2
3
4
5
6
7
cudaMalloc((void**)&nanFlags_dev, N*sizeof(int));
getNANpts << <fullBlocksPerGrid, blockSize >> >(N, z_dev, nanFlags_dev);
cudaDeviceSynchronize();
thrust::device_ptr<int> thrust_nanflags(nanFlags_dev);
//int num_of_nan = thrust::reduce(thrust_nanflags, thrust_nanflags + N, (int)0, thrust::plus <int >()); //统计有多少个NAN点
int num_of_nan = thrust::count(thrust_nanflags, thrust_nanflags + N, 1); //统计有多少个NAN点
cudaDeviceSynchronize();

出现错误:

原因:核函数getNANpts写错了。只对nanFlags_dev中的一个位置进行初始化,其他位置没有赋值,所以进行计算时会错误。

CUDA知识片段

  1. 线程模型适合用于OpenMP。进程模型适用于MPI

    在GPU环境下:CUDA使用一个线程块(block)构成网格(grid)。这可以看成是一个进程(即线程块)组成的队列(即网格),而进程之间没有通信。每一个线程块内部有很多线程以批处理的方式运行,称为线程束(warp)

CUDA Code Optimization

张也冬视频笔记

内存上的优化

计算上的优化

CUDA笔记补充

  • 几种同步方式

howtowriteaCUDAprogram

  • 学习资源
  • 简单总结如何写一个CUDA程序
  • CUDA自带的库

config-PCL-qt-cuda

配置PCL+QT+CUDA

cudanote9

第十二章 后记

CUDA 工具

GitHub

建议下载下来用Typora软件阅读markdown文件

cudanote8

第十一章 多GPU

零拷贝主机内存,可移动固定的内存

GitHub

建议下载下来用Typora软件阅读markdown文件

cudanote7

第十章 流

页锁定主机内存、CUDA流、GPU工作调度机制

GitHub

建议下载下来用Typora软件阅读markdown文件

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×