zoukankan      html  css  js  c++  java
  • CUDA 中的计时方法

    问题描述:一般利用CUDA进行加速处理时,都需要测试CUDA程序的运行时间,来对比得到的加速效果.

    解决方法:

    1).GPU端计时,即设备端计时.

    2).CPU端计时,即主机端计时.

    设备端计时有两种不同的方不地,分别是调用clock()函数和使用CUDA API的事件管理功能.

    clock函数计时:

    1).在内核函数中要测量的一段代码的开始和结束的位置分别调用一次clock函数,并将结果记录下来.

    2).根据这两次clock函数返回值,作差计算,然后除以GPU的运行频率(SP的频率)即可以得到内核执行时间.

    一般只需要记录每个block执行需要的时间,最后将得到多个block的开始和结束时间,

    然后比较这多个开始和结束时间,选择最小的开始(最早开始的block)时间和最大的结束时间(最晚结束的block),

    这两个时间值作差,除以GPU的运行频率即可以得到内核执行时间.

    CUDA API事件计时:

    利用cuda提供的事件管理api实现计时功能.

    主机端计时:

    利用库函数里提供函数进行计时,如gettimeofday(),clock()...

    注意问题:

    1).实际中用得较多的是第二和第三种测时方法.

    2).在cpu端测进,一定要了解CUDA API的异步特性,需要时,使用cudaThreadSynchronize()函数进行同步.

    3).使用CUDA runtime API时,会在第一次调用runtime API函数时启动CUDA环境.

    为了避免将这一部分时间计入,最好在正式测时开始前先进行一次包含数据输入输出的计算,

    这样可以使GPU从平时的节能模式进入工作状态,使测试结果更加可靠.

    [ 原文转自:http://www.cnblogs.com/dwdxdy/archive/2012/06/04/2534065.html ]

  • 相关阅读:
    require.js使用
    favico是针对网页图标内容更改
    web图片转换小工具制作
    控制显示input隐藏和查看密码
    程序员图片注释字符串制作工具
    c语言基础, , ,
    【理解】column must appear in the GROUP BY clause or be used in an aggregate function
    ps aux命令解析
    while(std::cin>>val)怎么结束的思考
    【转】NativeScript的工作原理:用JavaScript调用原生API实现跨平台
  • 原文地址:https://www.cnblogs.com/wanghetao/p/3504919.html
Copyright © 2011-2022 走看看