c# - 时间测量 CUDA 和 C#

标签 c# c visual-studio-2010 cuda

我想比较一下我的 cuda 代码在 gpu 上的速度(数据已经复制)和我的代码在 CPU 上的速度。

cuda-code中的Measurement是这样完成的

    cudaEvent_t start, stop;
    cudaEventCreate(&start);
    cudaEventRecord(start,0);

   //Kernel Execution
    transformKernel7<<<grid,threads>>>(dev_result, width, height, angle, N);

    cudaEventCreate(&stop);
    cudaEventRecord(stop,0);
    cudaEventSynchronize(stop);
    cudaEventElapsedTime(&cuTime, start,stop);

现在我想在 C# 中测量我的代码。 我有以下代码

var sw = Stopwatch.StartNew();

//making some calculation....

var elapsed = sw.ElapsedMilliseconds;

我的问题是 sw.ElapsedMilliseconds 不够精确。它在 0.02490834 的时间内给出了我的 0。

我会使用刻度,但我不确定如何重新计算刻度以获得正确的结果。我的 Cuda 代码中的时间可以给出我的值,例如 0.058938483。秒表不够精确。

有什么想法吗?

最佳答案

ElapsedMilliseconds 为您提供已经过去的整数时间。所以你不能通过那个属性得到小数部分。需要自己计算。

如果您想要更精确的时间,请将 ElapsedTicks 除以 Stopwatch.Frequency 以获得以秒为单位的时间。然后转换成你想要的时间单位。

var elapsedMilliseconds = (double)(sw.ElapsedTicks * 1000L) / Stopwatch.Frequency;

关于c# - 时间测量 CUDA 和 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12804724/

相关文章:

c# - 使用 NAudio 录制和播放音频

c - "static"变量的这个定义是错误的、误导性的还是两者都不是?

visual-studio-2010 - 在 VS 2010 中使用编码的 UI 测试启动 Web 应用程序

.net - 自定义解决方案配置未显示在 Visual Studio 2010 中

c++ - 附加到进程时,Visual Studio 不加载模块

c# - 在 LINQ 中重用连接

c# - 使用 PetaPoco Dynamic 和 WebAPI 返回 Json

c# - 如何从同一解决方案中的第二个项目的 Controller 派生

c - 根据命令行参数为数组分配内存的正确方法是什么?

关于赋值运算符的c编程查询请在windows和linux中指定输出及其原因