cost 324 ms
NVIDIA GPU 的 OpenCL 中浮点值的原子加法? - Atomic addition to floating point values in OpenCL for NVIDIA GPUs?

OpenCL 3.0 规范似乎没有用于对浮点值进行原子加法的内在函数/内置函数,仅用于整数值(在 OpenCL 1.x 和 2.x 中似乎也是如此)。 然而,CUDA 提供浮点原子已有一段时间了: 自然地,任何简单的原子操作都可以用比较和交换来模拟,这在 OpenCL 中是可用的。 但我的问题 ...

在 CUDA 编程中,计算中间结果后,原子 function 是否比减少更快? - In CUDA programming, is atomic function faster than reducing after calculating the intermediate results?

原子函数(例如atomic_add )在 CUDA 编程中广泛用于计数或执行求和/聚合。 但是,与普通全局 memory 读/写相比,我找不到有关原子函数速度的信息。 考虑以下任务,我们要计算一个具有 256K 元素的浮点数组。 每个元素是首先计算的 1000 个中间变量的总和。 一种方法是使用a ...

为什么浮动的OpenCL atomic_add实现会产生不确定的结果? - Why does the OpenCL atomic_add implementation for float produce a non-deterministic outcome?

我需要从OpenCL的多个线程中向同一全局内存地址添加一个float 。 对于任何两个模拟运行,结果永远不会相同,并且对atomic_add_f函数的调用是此错误的根源。 我正在使用具有驱动程序436.02的Nvidia Titan Xp GPU。 由于OpenCL的不支持atomic ...

跨并发内核执行的CUDA全局原子操作 - CUDA global atomic operations across concurrent kernel executions

我的CUDA应用程序执行整个卷的关联缩减。 本质上,每个线程都会计算原子添加到全局内存中同一输出缓冲区的重叠位置的值。 是否可以使用不同的输入参数和相同的输出缓冲区同时启动该内核? 换句话说,每个内核将共享相同的全局缓冲区并以原子方式对其进行写入。 所有内核都在同一GPU上运行。 ...

CUDA关键部分,线程/扭曲执行模型和NVCC编译器决策 - CUDA critical sections, thread/warp execution model and NVCC compiler decisions

最近我张贴了这个问题 ,大约一个关键部分。 这是一个类似的问题 。 在这些问题中,给定的答案表示,取决于代码是否“有效”,这取决于编译器, 因为各种执行路径的顺序取决于编译器 。 为了阐明其余的问题,我需要CUDA编程指南的以下摘录: ...组成线程束的各个线程从同一程 ...

CUDA 共享内存原子哪个更快 - 扭曲局部性或反局部性? - Which is faster for CUDA shared-mem atomics - warp locality or anti-locality?

假设(CUDA 内核网格)块中的许多扭曲正在重复更新相当数量的共享内存位置。 在哪种情况下,此类工作会更快完成? : 内部warp访问局部性的情况,例如每个warp访问的内存位置总数很小,并且其中大部分确实被多个lane访问 访问anti-locality 的情况,其中所有车道通常访问不 ...

CUDA中的原子操作是否保证按每次调度进行调度? - Are atomic operations in CUDA guaranteed to be scheduled per warp?

假设我有8个由32个线程组成的块,每个块在GTX 970上运行。每个blcok将全1或全0写入全局内存中长度为32的数组,其中一个块中的线程0写入该数组中的位置0。 现在写入实际值atomicExch,将数组中的当前值与该块尝试写入的值交换。 由于SIMD,原子操作以及扭曲在锁步中执行的 ...

加快CUDA原子计算的许多箱/几箱 - Speeding up CUDA atomics calculation for many bins/few bins

我正在尝试优化我在CUDA中的直方图计算。 它使我在相应的OpenMP CPU计算上获得了极好的加速。 但是,我怀疑(与直觉一致)大多数像素属于几个桶。 为了论证,假设我们有256个像素落入我们说两个桶。 最简单的方法就是做到这一点 将变量加载到共享内存中 ...

CUDA中要同步的多个变量 - more than one variable to synchronize in CUDA

我的程序有很多4字节字符串,例如“ aaaa”,“ bbbb”,“ cccc”……我需要收集通过crc检查的特定字符串。 因为字符串通过crc检查的可能性很小,所以我不想使用非常大的缓冲区来保存所有结果。 我更喜欢像输入一样一一总结的结果。 例如,如果输入为“ aaaabbbbcccc ...

如何在CUDA中获得原子负载 - How to have atomic load in CUDA

我的问题是如何在CUDA中获得原子负载。 原子交换可以模拟原子库。 可以以类似的方式非昂贵地模拟原子负载吗? 我可以使用带有0的原子加载来原子地加载内容,但我认为它很昂贵,因为它执行原子读取 - 修改 - 写入而不是仅读取。 ...

Cuda原子锁:按顺序进行线程 - Cuda atomic lock: threads in sequence

我有一段需要严格执行的代码。 我为那段代码使用了锁,以便内核的每个线程(每个块设置一个线程)原子地执行那段代码。 线程的顺序困扰着我-我需要线程根据其索引(或实际上,按其blockIdx的顺序)从0到10的时间顺序执行(而不是随机地(例如5、8、3, 0,... etc)。 有可能这样做吗 ...

CUDA原子操作和并发内核启动 - CUDA atomic operations and concurrent kernel launch

目前,我开发了一个基于GPU的程序,该程序使用多个内核,这些内核通过使用多个流同时启动。 在我的应用程序中,多个内核需要访问队列/堆栈,我计划使用原子操作。 但我不知道原子操作是否在多个内核同时启动之间起作用。 请帮助我了解GPU上的原子操作的确切机制或有此问题经验的人。 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM