CUDA计时器怎么实现
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容介绍了"CUDA计时器怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在进行CUDA编
千家信息网最后更新 2025年02月06日CUDA计时器怎么实现
本篇内容介绍了"CUDA计时器怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在进行CUDA编程时,需要利用计时方法查看程序运行速度。
首先给出头文件 gputimer.h
#ifndef __GPU_TIMER_H__#define __GPU_TIMER_H__struct GpuTimer{ cudaEvent_t start; cudaEvent_t stop; GpuTimer() { cudaEventCreate(&start); cudaEventCreate(&stop); } ~GpuTimer() { cudaEventDestroy(start); cudaEventDestroy(stop); } void Start() { cudaEventRecord(start, 0); } void Stop() { cudaEventRecord(stop, 0); } float Elapsed() { float elapsed; cudaEventSynchronize(stop); cudaEventElapsedTime(&elapsed, start, stop); return elapsed; }};#endif /* __GPU_TIMER_H__ */
通用用法
GpuTimer timer;timer.Start();// launch the kernalkernal<<<1, ARRAY_SIZE>>>(d_out, d_in);timer.Stop();printf("Time elapsed = %g ms\n", timer.Elapsed()); // 输出
实际运用,计算1000个数的平方
#include#include "device_launch_parameters.h"#include "gputimer.h"#include #include __global__ void square(float* d_out, float* d_in) { int idx = threadIdx.x; float f = d_in[idx]; d_out[idx] = f * f;}int main() { GpuTimer timer; const int ARRAY_SIZE = 1000; const int ARRAY_BYTES = ARRAY_SIZE * sizeof(float); // generate the input array on the host float h_in[ARRAY_SIZE]; for (int i = 0; i < ARRAY_SIZE; i++) { h_in[i] = float(i); } float h_out[ARRAY_SIZE]; // declare GPU memory pointers float* d_in; float* d_out; // allocate GPU memory cudaMalloc((void **)&d_in, ARRAY_BYTES); cudaMalloc((void**)&d_out, ARRAY_BYTES); // transfer the array to the GPU cudaMemcpy(d_in, h_in, ARRAY_BYTES, cudaMemcpyHostToDevice); timer.Start(); // launch the kernal square<<<1, ARRAY_SIZE>>>(d_out, d_in); timer.Stop(); // copy back the result array to the CPU cudaMemcpy(h_out, d_out, ARRAY_BYTES, cudaMemcpyDeviceToHost); // print out the resulting array for (int i = 0; i < ARRAY_SIZE; i++) { printf("%f", h_out[i]); printf(((i % 4) != 3) ? "\t" : "\n"); } printf("Time elapsed = %g ms\n", timer.Elapsed()); // free GPU memory allocation cudaFree(d_in); cudaFree(d_out); system("pause"); return 0;}
运行结果:
"CUDA计时器怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
计时器
内容
实际
更多
知识
输出
运行
实用
学有所成
接下来
个数
困境
情况
文件
文章
方法
案例
程序
结果
编带
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全大学本科
计算机网络技术及应用十三五教材
我的世界服务器吧
安顺网络技术主管工资多少
网络安全培训学习
无忧网络技术排名靠前
浙江大华软件开发校招面试
廊坊cmmi软件开发
孝感市凯维网络技术
安全知识竞赛服务器
最新服务器主板
好评的眼镜行业软件开发
jdk服务器版本和win版本
网络安全等级保护设计
嘉兴桌面软件开发自学步骤
整柜服务器
温州app软件开发企业
自选车号数据库
ugg专用服务器
RDF基于关系数据库的存储
怎样去服务器建立安全连接
成都企业软件开发哪家正规
工商银行服务器调用失败
新化县软件开发培训
数据库审计日志删除
用户数据网络安全
深圳软件开发工程师工资
局域网访问内网服务器占用带宽吗
软件开发提折旧吗
mysq1数据库