CUDA 中的块间同步

2023-12-31

我为这个问题搜索了一个月。我无法同步 CUDA 中的块。

我读过很多关于atomicAdd、合作组等的文章。我决定使用一个全局数组,这样一个块就可以在全局数组的一个元素上写入。写入之后,块的线程将等待(即陷入 while 循环),直到所有块都写入全局数组。

当我使用 3 个块时,我的同步效果很好(因为我有 3 个 SM)。但使用 3 个街区可以让我获得 12% 的入住率。所以我需要使用更多的块,但它们无法同步。 问题是:SM 上的一个块等待其他块,因此 SM 无法获取另一个块。

我能做些什么?当区块数量超过SM数量时,如何同步区块?

CUDA-GPU 规范:CC。 6.1、3 SM、Windows 10、VS2015、GeForce MX150 显卡。 请帮助我解决这个问题。我使用了很多代码,但没有一个起作用。


进行块间同步的 CUDA 编程模型方法是

  1. (隐式)使用内核启动本身。在内核启动之前或完成之后,所有块(在启动的内核中)都会同步到已知状态。无论内核是从主机代码启动还是作为 CUDA 动态并行启动的一部分,这在概念上都是正确的。

  2. (显式)使用网格同步CUDA合作团体 https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#cooperative-groups。这对支持有多种要求,您正在开始探索其他问题 https://stackoverflow.com/questions/53780815/how-can-using-cooperative-groups-feature-of-cuda-in-windows。支持最简单的定义是如果适当的财产 https://docs.nvidia.com/cuda/cuda-runtime-api/structcudaDeviceProp.html#structcudaDeviceProp_13c26ab51c96f39b115d7826337541914已设置 (cooperativeLaunch)。您可以使用编程方式查询属性cudaGetDeviceProperties() https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__DEVICE.html#group__CUDART__DEVICE_1g1bf9d625a931d657e08db2b4391170f0.

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

CUDA 中的块间同步 的相关文章

  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • 在 CUDA 中的设备内存上分配 2D 数组

    如何在 Cuda 中的设备内存中分配和传输 往返于主机 2D 数组 我找到了解决这个问题的方法 我不必展平阵列 内置的cudaMallocPitch 函数完成了这项工作 我可以使用以下命令将阵列传输到设备或从设备传输阵列cudaMemcpy
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • Rmpi:mclapply:在 selectChildren(ac, 1) 中:选择中出现“系统调用中断”错误

    以下最小示例 require Rmpi set seed 1 foo lt parallel mclapply seq len 10 function l lapply 1 10 function x mean rnorm 10000 me
  • Windows Azure 虚拟机配备什么类型的显卡?

    我正在考虑在 Windows Azure 虚拟机上运行一些图形密集型程序 但不确定它们有什么样的硬件 所有虚拟机都具有相同的 GPU 吗 您对此有何体验 Azure 虚拟机中的 GPU 可能非常基本 并且很可能不具备执行密集图形操作所需的处
  • CUDA 和 Eigen 的成员“已声明”错误

    我只是 CUDA 和 Nsight 的初学者 希望利用出色的 GPU 性能进行线性代数运算 例如 CUBLAS 我在以下人员的帮助下编写了很多自定义代码Eigen http eigen tuxfamily org index php tit
  • 如何简化 Step Functions 的复杂并行分支相互依赖关系

    我的任务是将依赖节点列表转换为 AWS Step Functions AWS Step Function 定义允许并行分支甚至嵌套到多个深度的分支 不幸的是 它不支持分支中任务之间的依赖关系 因此强制您在两个结果可用于步骤函数中的后续任务之
  • 完全禁用 NVCC 优化

    我正在尝试测量 GPU 上的峰值单精度触发器 为此我正在修改 PTX 文件以在寄存器上执行连续的 MAD 指令 不幸的是 编译器正在删除所有代码 因为它实际上没有做任何有用的事情 因为我没有执行任何数据的加载 存储 是否有编译器标志或编译指
  • 并行化随机森林

    通过搜索和询问 我发现了许多可以用来利用服务器所有核心的软件包 以及许多可以进行随机森林的软件包 我对此很陌生 并且在并行随机森林训练的所有方法中迷失了方向 您能否就使用和 或避免它们中的每一个或它们的某些特定组合 以及有或没有caret
  • 编写openCL代码时,在没有GPU的单核机器上表现如何?

    大家好 我目前正在将光线追踪器从 FORTRAN 77 移植到 C 语言以进行研究项目 移植了要点之后 问题是我们如何进行并行化 在实验室中 我可以使用几台不同的 Opteron 机器 具有 2 到 8 个内核 但没有 GPU 目前 我们正
  • 如何从C++头文件调用CUDA文件?

    我知道从 c 文件调用 cu 文件的方法 但现在我想从 C 头文件调用 cu 文件 有可能做到吗 如果是这样 我应该如何设置我的项目 请帮忙 这是一个有效的例子 file1 h int hello file2 h include
  • Tensorflow新Op CUDA内核内存管理

    我已经使用 GPU CUDA 内核在 Tensorflow 中实现了一个相当复杂的新 Op 该操作需要大量动态内存分配 这些变量不是张量 并且在操作完成后被释放 更具体地说 它涉及使用哈希表 现在我正在使用cudaMalloc and cu
  • .Net 中可用的并行技术

    我是 Net 平台的新手 我查了一下 发现 Net中有几种做并行计算的方法 任务并行库中的并行任务 即 Net 3 5 PLINQ Net 4 0 异步编程 Net 2 0 异步主要用于执行 I O 繁重的任务 F 有简洁的语法支持这一点
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 并行应用程序的可变与不可变[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我正在编写的应用程序中 我需要编写大量基本类型 这些类型很可能是不可变的 但我想知道并行应用程序中可变类型与不可变类型的比较如何 您可以对可变
  • 需要 TensorFlow 依赖项。如何在 Windows 上运行 TensorFlow

    我有兴趣让 TensorFlow 在 Windows 上运行 但目前我意识到这是不可能的 因为某些依赖项无法在 Windows 上使用 例如巴泽尔 之所以出现这种需求 是因为据我目前了解 从 TensorFlow 访问 GPU 的唯一方法是
  • 为什么以下内容会并行运行而不是顺序运行?

    给定以下函数evalPair parPair and deepSeq分别 evalPair Strategy a gt Strategy b gt Strategy a b evalPair sa sb a b do a lt sa a b
  • Google Colab 显示忙碌

    我昨天在 google colab 上进行了训练过程 现在 即使重新启动运行时并中断执行后 Google Colab仍显示繁忙 我想停止当前的执行 请帮忙 从运行时菜单中选择 重新启动运行时 就足够了 如果由于某种原因不起作用 您可以通过从
  • 使用多线程并行化 Java 中的 for 循环

    我对java很陌生 我想使用执行器服务或使用java中的任何其他方法并行化嵌套for循环 我想创建一些固定数量的线程 这样CPU就不会完全被线程占用 for SellerNames sellerNames sellerDataList fo
  • Repa 数组上的并行 mapM

    在我最近的work https github com bgamari mixture model with Gibbs sampling 我一直在充分利用RVar http hackage haskell org packages arch

随机推荐

  • 有没有办法更快地渲染点OpenGL

    我需要在 openGL 中可视化大约 50k 60k 点 我设法将它们全部打印出来 但是当我使用旋转时 每次旋转之间需要花费很多时间 因为它只是打印每一帧的所有数据 有没有办法一次性打印所有数据并冻结数据的导入 以便保留图像但停止处理 de
  • 如何检测本地存储何时被清除

    我在页面 A 中添加了本地存储中的一些值 当我转到页面 B 时 本地存储不应被清除 但确实如此 这是一个程序错误 但是 我无法正确跟踪它以了解这种情况何时发生 我尝试执行 setInterval 来每 1 秒在控制台中记录一次本地存储的值
  • Ctrl + A 和类似的选择操作快捷键在可视代码中不起作用

    Select all copy cut and paste are not working by using the usual keyboard shortcuts ctrl a c x or v 对于 VS Code 1 55 1 我通
  • 在 Angular 1 中,如何对 ng-repeats 进行分页?

    我目前使用过滤器将 ng repeat 限制为 5 但我想知道如何对数据进行分页 div 我有数量不定的重复项目 我希望用户能够以合理的块查看这些项目 一次五个 并使用下一个 上一个按钮或页码来跳过 是否有一个非常适合这项任务的角度指令 使
  • 出现错误 -java.lang.NoClassDefFoundError: javax/faces/component/behavior/ClientBehaviorHolder

    我在集成 SWF Primefaces 2 2 1 JSF 2 Spring Security 3 Spring 3 1 0 时遇到奇怪的错误 INFO Unsanitized stacktrace from failed start co
  • 了解 Python WSGI 应用程序中的全局对象持久性

    请考虑 Google App Engine 中我的 WebApp2 应用程序中的以下代码 count 0 class MyHandler webapp2 RequestHandler def get self global count co
  • 正则表达式删除重复单词?

    我用它来删除重复的单词 Notepad 或 Powergrep b w b W 1 用 来代替 1 如何更改以查找不连续的重复单词排成一行并删除第二个重复的单词 Example word1 word2 word1 word3 Result
  • 将四元数从右手坐标翻转到左手坐标

    我需要从右边翻转四元数 x left to right y front to back z top to bottom 到左手坐标 其中 x left to right y top to bottom z front to back 我该怎
  • unordered_set 将元素存储为指针

    缩小范围 我目前正在使用升压无序 http www boost org doc libs 1 49 0 doc html unordered html 我看到两种可能的解决方案 定义我自己的等式谓词和哈希函数 http www boost
  • VS2010不会显示项目属性(“底层RCW”)?

    只有有时 我还没有注意到模式 当我右键单击一个项目 各种类型的项目 并选择 特性 我通常可以在重新启动 VS2010 后查看项目页面 我用的是RTM版本 什么可能导致此错误 莱帕德英国 我遇到了同样的问题 最后发现出了什么问题 这是行为不当
  • 传单标记在某些情况下不显示

    我正在使用 leaflet htmlwidget 实现来使用 R 绘制基于 Web 的地图 我正在寻找特定的标记 但找不到它 并意识到它根本没有显示 但是 当我将数据集子集化为just该条目 标记显示得很漂亮 这是标记的屏幕截图 在将数据子
  • EF 映射为表中的所有列名称添加前缀

    我有一个大型现有数据库 它有一个约定 其中所有列名称都以非复数表名作为前缀 例如 Tablename addresses Columns addressId addressLine1 addressLine2 是否有任何配置可以申请映射 使
  • CMake 安装目标依赖项

    我正在编写一个包含库本身和示例的库 并且我正在使用 CMake cmake minimum required VERSION 3 6 add executable example main cpp install DIRECTORY inc
  • 断开连接时 Firebase 更新

    我在 firebase 上有一个节点 列出了游戏中的所有玩家 当新玩家加入时 此列表将更新 当当前用户 我 断开连接时 我想将自己从列表中删除 由于列表会随着时间的推移而变化 在我断开连接的那一刻 我想更新此列表并更新 firebase 这
  • javascript var 和 not var 有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中使用 var 和不使用 var 的区别 https stackoverflow com questions 1470488 difference between using v
  • 如果在离线状态下加载/刷新页面,JavaScript 后台同步将停止工作

    我目前正在学习如何使用后台同步来允许用户在离线使用网络应用程序时进行 PUT POST 更改 我按照杰克 阿奇博尔德 Jake Archibald 的指示进行操作后台同步简介 https developers google com web
  • 如何在 Asyncstorage 中设置多个值

    如何在 Asyncstorge 中设置多个值 因为我正在尝试设置token and user id 这些是服务器响应值 这就是响应的样子 json error 0 data User registered Successfully user
  • NSArray 基于密钥的 Tokenize

    我已经从服务器获取了数据并且传递的数据也填充了NSMutableArray after NSJSONSerialization 数组输出如下 NSArray jsonArray NSArray json NSLog Array jsonAr
  • 是否可以检测文件是否实际下载

    假设我有一个返回的控制器操作方法FileResult 是否可以检测文件是否被实际下载的完全交给客户 public ActionResult GetFile int id DownloadInfo data provider GetInfo
  • CUDA 中的块间同步

    我为这个问题搜索了一个月 我无法同步 CUDA 中的块 我读过很多关于atomicAdd 合作组等的文章 我决定使用一个全局数组 这样一个块就可以在全局数组的一个元素上写入 写入之后 块的线程将等待 即陷入 while 循环 直到所有块都写