CUDA 中的随机播放指令不起作用

2024-02-24

我在 CUDA 5.0 中遇到随机播放指令问题。

这是我的内核的片段。它在循环内部。打印仅用于调试目的,因为我无法使用普通调试器:

...
tex_val = tex2D(srcTexRef, threadIdx.x + w, y_pos);
if (threadIdx.x == 0)
{
    left = left_value[y_pos];
}
else
{
    printf("thread %d; shfl value: %f \n", threadIdx.x, __shfl_up(value, 1));
    left = __shfl_up(value, 1);
}

printf("thread %d; value: %f; tex_val: %f; left: %f \n", threadIdx.x, value, tex_val, left);
...

从那里我得到这个输出:

l0:  ITERATION 1
l1:  thread 0; value: 0; tex_val: 1; left: 4
l2: 
l3:  ITERATION 2
l4:  thread 1; shfl value: 0
l5:  thread 0; value: 5; tex_val: 1; left: 5
l6:  thread 1; value: 0; tex_val: 1; left: 0
l7: 
l8:  ITERATION 3
l9:  thread 1; shfl value: 0
l10: thread 2; shfl value: 1
l11: thread 0; value: 6; tex_val: 1; left: 6
l12: thread 1; value: 1; tex_val: 1; left: 0
l13: thread 2; value: 2; tex_val: 1; left: 1
...

从输出中我可以看到线程 1 在任何迭代中都没有从线程 0 获取值,即使我可以清楚地看到它具有值(第 4 行 - shfl 值为 0;第 5 行 - 值为 5)。线程 2 及更高线程可以从较低线程获取值。我哪里出错了?是因为分支而发生的吗?


是的,这是因为分支。引用自CUDA 编程指南 B.14.2 http://docs.nvidia.com/cuda/cuda-c-programming-guide/#warp-shuffle-functions:

The __shfl()内在函数允许在 warp 内的线程之间交换变量,而无需使用共享内存。所有交换同时发生active经纱内的螺纹,...

and

线程只能从积极参与的另一个线程读取数据__shfl()命令。如果目标线程处于非活动状态,则检索到的值未定义。

在分支中,活动线程是那些采用相同执行路径的线程,而那些采用不同执行路径的线程是非活动线程。在您的情况下,线程 0 处于非活动状态,因此您无法从中进行洗牌。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CUDA 中的随机播放指令不起作用 的相关文章

随机推荐

  • 有谁知道 LocationManager 上的 Android addProximityAlert 是否耗电

    我基本上只是想添加大约 20 个 有时是 80 个接近警报 且半径约为 500 米 且没有时间限制 只是想知道这样做是否会很快耗尽电池电量 减小半径也会有什么不同吗 这肯定会很快耗尽你的电池 在任何情况下 您都不想设置超过几个接近警报 您描
  • 在自定义AuthorizeAttribute中获取Post请求参数

    我在用this https stackoverflow com a 19050773 384554从输入流中获取请求参数 POST 在请求正文中使用 JSON 在我的onAuthorize被覆盖的函数AuthorizeAttribute 它
  • 与证书作斗争:私钥未成功获取访问权限

    我在为开发人员提供许多服务器和个人电脑的公司工作 服务器是win2003 开发PC是Windows XP 在名为 preiis01 的服务器 Win2003 中 在预生产环境中 公司其他人使用任何其他用户 对我来说未知用户 安装客户端证书用
  • 如何发出 jsonp 请求

    我需要做一些跨站点脚本编写 下面的代码块包含 jsonp 的方法 该方法就像失败一样返回 但是当我将其更改为 get 请求时 我就成功了 我需要能够使用 jsonp 方法成功响应 可以排除以下情况 响应是有效的 json 并且此参数位于 u
  • 同一 .Net 6 项目中多个 nuget 包中同一 DLL 的不同版本

    我有一个名为 Foundation dll 的基本 nuget 库 我还有另外 5 个 nuget 库 它们使用不同版本的 Foundation dll 一切都在一个项目中 我的问题是 当我构建一个项目时 VS Net 显然只会在 bin
  • webpack 4 模块可以配置为允许 Jasmine 监视其成员吗?

    我无法让我的测试 jasmine 测试套件与 webpack 4 一起运行 升级 webpack 后 几乎每个测试都会出现以下错误 Error
  • C# 中泛型类型的命名空间范围别名

    让我们看一个下面的例子 public class X public class Y public class Z public delegate IDictionary
  • 用 C# 下载 HTML 页面

    我正在用 C 编写一个应用程序 有没有办法只给我的程序提供 URL 来下载 HTML 页面 例如 我的程序将获取 URL www google com 并下载 HTML 页面 Use WebClient DownloadString htt
  • Django模型子类中相同的字段,不同的选择

    是否可以使用不同的choices对于模型的子类 下面的代码应该可以给你一个想法 class Clothing models Model size models CharField max length 1 colour models Cha
  • Play 控制台:在哪里可以找到运行我的应用程序的设备列表?

    我正在寻找一种方法来导出当前安装了 Android 应用程序的设备列表 这可能吗 如果可以 如何实现 玩游戏时 转到您的应用程序页面 在左侧边栏上 选择统计 打开 添加新指标 或编辑现有指标 下拉列表 选择设备 gt 安装基础 gt 所有设
  • 用Java发送/接收电子邮件

    我想通过 Java 发送电子邮件 任何电子邮件 如来自 yahoo gmail 或任何其他部分 我尝试了代码here http www tutorialspoint com java java sending email htm 但是我得到
  • Swift - Objective-C 加载类方法?

    在 Objective C 中 NSObject有一个名为的类方法load当类第一次加载时被调用 Swift 中的等价物是什么 implementation MyClass void load self registerClass end
  • Sl 4、MVVM:在TextBlock中使用Inlines,如何绑定到ViewModel?

    我们通过向 TextBlock Inlines 添加一系列 System Windows Documents Run 对象来格式化 TextBlock 的文本 我们如何绑定ViewModel中的格式化文本以显示在TextBlock中 感谢您
  • 如何使用 Jackson API(列表内的列表)迭代 JSON 响应?

    如何使用 Jackson API 迭代 Java 中的 JSON 响应 换句话说 如果响应有一个列表 并且该列表内有另一个列表 在本例中称为 天气 那么我如何获取温度 这是我试图迭代的示例 message like cod 200 coun
  • JBOSS - 计时器的先前执行仍在进行中,计时器状态为 IN_TIMEOUT

    我正在使用 JBOSS EAP 6 4 我使用 EJB Shedule 注释在 ScedulerBean 中安排了一些调度程序 如下所示 这里的ShedulerBean依赖于StartupBean Singleton DependsOn S
  • 实体框架与 NHibernate - 性能

    我希望在我们的系统中实现 ORM 我们目前有许多表 其中有大量可怕的数据和存储过程 我听说使用 ORM 会降低系统速度 有谁知道哪种 ORM 使用 C 代码中创建的查询并映射到存储过程在速度和性能方面更好 Thanks EDIT 该项目将使
  • C++ 迭代器对向量中的某些元素进行迭代

    如果这是一个微不足道的问题 请原谅我 我只是在学习 C 并试图理解某些概念 尤其是当涉及到迭代器时 我完全迷失了 假设我有一个表示某种数据结构的自定义类 其成员之一是整数向量 我想为该类编写一个双向迭代器 它仅输出向量中的偶数 有没有简单且
  • matlab ode45 检索参数

    我正在 Matlab 中试验 ode45 我已经学会了如何将参数传递给 ode 函数 但我仍然有一个问题 假设我想计算汽车的轨迹 速度曲线 并且我有一个函数 例如getAcceleration 这给了我汽车的加速度以及正确的档位 accel
  • 如何使用 SQL Server 企业版在 app_data 下添加新数据库

    我绝对是 MVC 的新手 现在我才刚刚开始 我查看了教程播客 其中我可以在下面添加一个新的 SQL Server 数据库项目app data 但是 一旦我单击该按钮 就会弹出一条消息 显示我的桌面上没有安装 SQL Server 2005
  • CUDA 中的随机播放指令不起作用

    我在 CUDA 5 0 中遇到随机播放指令问题 这是我的内核的片段 它在循环内部 打印仅用于调试目的 因为我无法使用普通调试器 tex val tex2D srcTexRef threadIdx x w y pos if threadIdx