VS2017 CUDA编程学习1:CUDA编程两变量加法运算
VS2017 CUDA编程学习2:在GPU上执行线程
VS2017 CUDA编程学习3:CUDA获取设备上属性信息
VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现
VS2017 CUDA编程学习5:CUDA并行执行-线程
VS2017 CUDA编程学习6: GPU存储器架构
VS2017 CUDA编程学习7:线程同步-共享内存
VS2017 CUDA编程学习8:线程同步-原子操作
VS2017 CUDA编程学习9:常量内存
VS2017 CUDA编程学习10:纹理内存
VS2017 CUDA编程学习实例1:CUDA实现向量点乘
前言
今天跟大家分享CUDA程序性能测量的方法:CUDA事件API和CUDA可视化性能分析工具-nvidia visual profiler
1. CUDA事件API
为什么要使用CUDA事件API而不是使用CPU时间统计的API来测量CUDA程序性能呢?这是因为CPU和GPU设备不是同步执行的,而是异步的,所以在CPU上使用时间统计的API来记录GPU的运行时间是不精确的。
CUDA事件,通俗地讲,就是GPU上记录时间戳的API,类似CPU上运行时间统计(e.g. clock_t, time_t, …);
使用CUDA事件主要包括3个步骤:1. 创建CUDA事件;2记录CUDA事件;3. 统计CUDA事件记录的时间;
2. C++ 实现CUDA事件例子
这里以在GPU上实现10000个数据的加法运算为例介绍CUDA事件的简单用法。
详细代码如下所示:
#include <stdio.h>
#include <cuda.h>
#include<cuda_runtime.h>
#include <cuda_runtime_api.h>
#include <device_launch_parameters.h>
#define N 10000
#define THREADS_PER_BLOCK 100
#define