- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在下面的博客链接中给出了矩阵转置的示例,下面的链接显示了如何使用 3 种方法进行转置矩阵,naive、Coalesced 和 Nobankconflict Coalesced
https://github.com/parallel-forall/code-samples/blob/master/series/cuda-cpp/transpose/transpose.cu
在 Main() 中,当调用内核代码时,所有 3 个方法都以类似的方式调用它,如下代码部分(取自 main 函数主机):
cudaMemset(d_tdata, 0, mem_size);
// warmup
transposeNoBankConflicts << <dimGrid, dimBlock >> >(d_tdata, d_idata);
cudaEventRecord(startEvent, 0);
for (int i = 0; i < NUM_REPS; i++)
transposeNoBankConflicts << <dimGrid, dimBlock >> >(d_tdata, d_idata);
cudaEventRecord(stopEvent, 0);
cudaEventSynchronize(stopEvent);
cudaEventElapsedTime(&ms, startEvent, stopEvent);
cudaMemcpy(h_tdata, d_tdata, mem_size, cudaMemcpyDeviceToHost);
我什至看了网上的代码解释,它是矩阵转置的一个很好的引用
http://devblogs.nvidia.com/parallelforall/efficient-matrix-transpose-cuda-cc/
但是有一部分没有解释:
为什么如您所见,内核被调用了两次:1\一次,正如评论所说的热身2\秒下for循环最多100次(NUM_REPS)这是一个初始化为100的#define值,
那么为什么不调用一次呢?为什么两次和第二次 100 次循环?尽管我只使用其中一个进行了测试,但它们都提供了有效输出,但时间不同,
希望我的问题很清楚,如果有什么需要注意的地方请告诉我,谢谢
最佳答案
这与矩阵转置无关:这些是准确计时代码块的一些基础知识。
第一个关键点是函数通常运行得如此之快,以至于您无法从计时函数中准确估计它们的运行时间:因此,需要在循环中多次运行该函数,以便获得更好的精度.
(而且你必须注意你实际上是在为你想要的时间计时;有时优化器很聪明,你尝试的最简单的事情实际上不会为你想要的时间计时;例如,优化器可能会找到一种有效混合在一起的方法代码的结尾和开头,或者它可能会注意到您没有使用循环中前 99 次的输出,因此它不会打扰运行它们。使用 nvcc< 可能不会受到这种影响
,因为它几乎肯定会将内核编译成一个不透明的函数调用)
第二个关键点是第一次迭代通常会比后面的迭代慢,原因有很多,下面列出了一些。因此,为了获得准确的计时,您通常不希望在计时中包含第一次迭代。
关于c++ - 使用 CUDA 转置 : Inquiry on program in Blog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925079/
我很好奇,当一个人继续使用 Instruments 执行泄漏检查代码时,手动点击应用程序的所有部分以确保相应区域发生内存泄漏是否明智?例如,我相信我的应用程序中存在一些内存泄漏,位于 UINaviga
我有一个带有 UIView 的 NIB 文件、几个 UIImageView(包括 Logo )和 UITableView 嵌入在 Logo 下方的 UIView 中,我允许用户输入用户名/密码来登录我
我无法得到图像来回应媒体询问。我知道查询路径有效,当我使用 display: none 属性时,图像消失了。 我想做的是在较小的屏幕尺寸下“取消 float ”图像,使其位于标题文本下方。 我无法让
ANSWERED! I posted an answer with code that I modified from Arbitur. Thanks to Phillip as well for t
我对 cosmos-db 索引策略和隐式全扫描感到困惑。 我的最终目标是: 防止对非索引属性进行意外全面扫描 仅对明确指定的属性建立索引 假设我有一张这样的 table : { "id": "tr
我对 cosmos-db 索引策略和隐式全扫描感到困惑。 我的最终目标是: 防止对非索引属性进行意外全面扫描 仅对明确指定的属性建立索引 假设我有一张这样的 table : { "id": "tr
我在下面的博客链接中给出了矩阵转置的示例,下面的链接显示了如何使用 3 种方法进行转置矩阵,naive、Coalesced 和 Nobankconflict Coalesced https://git
我在理解express.js路线时遇到了一些麻烦 如果我设置开箱即用的 hello world 应用程序,我将获得带有单个路由的基本设置 app.get('/', routes.home); 正如在e
我的任务是通过 BACnet TCP/IP 从 Trane Tracer summitBCU 通信和读取 BACnet 对象及其属性的列表。但是,我不知道哪些 BACnet 服务可以从 BCU 获取
我是一名优秀的程序员,十分优秀!