cost 264 ms
共享内存的 atomicAdd 与 int 和 float 有不同的 SASS - Shared Memory's atomicAdd with int and float have different SASS

我遇到了一个性能问题,在使用nv-nsight-cu-cli进行分析后, float上的共享内存atomicAdd比int上的要贵得多。 检查生成的SASS后,发现共享内存的atomicAdd在float和int上生成的SASS根本不相似。 在这里,我展示了一个最小 cuda 代码的示例:$ ca ...

为什么 Ampere GPU 上每个块的最大共享 memory 不是 16 KiB 的倍数? - Why is the max amount of shared memory per block on Ampere GPUs not a multiple of 16 KiB?

传统上,NVIDIA GPU 提供了 CUDA 线程块共享 memory 的数量始终可被 16 KiB 整除(参见例如在此表中)。 但是,对于 Ampere 8.0 和 8.6 GPU,数量为 99 KiB 和 163 KiB。 怎么来的? 这是因为硬件问题吗? 不会是错字吧? ...

为什么我的 GPU 拒绝接受共享的 memory 配置而不发出错误? - Why does my GPU refuse to accept a shared memory configuration without emitting an error?

考虑下面的程序。 它得到一个 CUDA 设备当前共享的 memory bank 大小配置; 将其设置为另一个值; 然后再次得到它。 不幸的是,这是 output: 我的问题:为什么会发生这种情况? 具体来说, 某些 CUDA GPU 是否会忽略此设置? 如果是这样,为什么设置银行配置时没有返回错误 ...

CUDA 平铺矩阵乘法解释 - CUDA tiled matrix multiplication explanation

我试图了解 CUDA SDK 8.0 中的示例代码如何工作: kernel 的这一部分对我来说相当棘手。 我知道矩阵 A 和 B 表示为数组 (*float),并且由于共享 memory 块,我还知道使用共享 memory 来计算点积的概念。 我的问题是我不理解代码的开头,尤其是 3 个特定变量( ...

如何配置我的 jupyter 笔记本,使其在使用 keras 时使用可用的 GPU? - How do I configure my jupyter notebook so that it uses the available GPU while working with keras?

我搜索了解决方案并使用 pip 安装了 tensorflow-gpu。 此代码返回一个空列表。 [] 您可以看到我有 2 个 GPU,但是当我使用 keras 进行图像处理 (CNN) 时,它们都没有被使用。 我是新手,所以不明白到底出了什么问题。 请帮我配置,以便我可以使用我的 GPU 进行处理 ...

CUDA 直方图问题 - CUDA Histogram Issue

我有一个简单的 CUDA 代码生成直方图的问题: 直方图用于记录输入中存在的值的数量,允许的值为 1 到 256。每个块最多有 256 个线程。 我试图将块中的总线程数限制为,以便每个线程记录直方图中出现的一个值。 如果我使用“values_arr = { 2, 2, 2, 2, 2, 2, 2, ...

来自 CUDA 上共享内存中的非顺序访问的银行冲突 - Bank Conflicts From Non-Sequential Access in Shared Memory on CUDA

我正在编写一些 N 体模拟代码,在 CUDA 中针对 Volta 和图灵系列卡进行短程交互。 我计划使用共享内存,但我不太清楚这样做时如何避免银行冲突。 由于我的交互是本地的,我计划将我的粒子数据分类到本地组中,我可以将这些数据发送到每个 SM 的共享内存(还没有担心粒子的邻居正在从另一个 SM 工 ...

解释ptxas的详细输出,第二部分 - Interpreting the verbose output of ptxas, part II

这个问题是解释ptxas的详细输出的延续,第一部分 。 当我们使用ptxas -v编译内核.ptx文件,或者使用-ptxas-options=-v从.cu文件编译它时,我们得到几行输出,例如: (与链接问题中的示例相同;但名称为demangling) 这个问题涉及到最后一行。 ...

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

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

最小化64位线程分隔共享内存的库冲突的策略 - Strategy for minimizing bank conflicts for 64-bit thread-separate shared memory

假设我在CUDA块中有完整的线程扭曲,并且这些线程中的每个线程都旨在与T类型的N个元素一起工作,它们位于共享内存中(因此,我们共有warp_size * N = 32 N个元素)。 不同的线程从不访问彼此的数据。 (好吧,他们知道,但是在以后的阶段我们不在乎)。 这种访问将在如下所示的循环 ...

GPU共享内存实际示例 - GPU shared memory practical example

我有一个像这样的数组: 我想使用G80 GPU上的共享内存来计算该数组的缩减量。 NVIDIA文档中引用的内核是这样的: 该论文的作者说,这种方法存在银行冲突的问题。 我试图理解,但我不知道为什么? 我知道银行冲突和广播访问的定义,但仍然无法理解。 银行冲突 ...

我可以检查地址是否在共享内存中吗? - Can I check whether an address is in shared memory?

我想编写以下 CUDA 函数: 在主机端,我们有一个类似 cudaPointerGetAttributes形式的工具,它可以告诉我们一个指针是指向设备内存还是主机内存; 也许还有一些方法可以区分设备代码中的指针,也许它还可以区分共享指针和全局指针。 或者,也许更好——也许有一种编译时机制可以做到 ...

我的内核代码可以告诉它有多少共享内存吗? - Can my kernel code tell how much shared memory it has available?

正在运行的设备端CUDA代码是否可能知道为正在运行的内核网格的每个块分配了多少(静态和/或动态)共享内存? 在主机方面,您知道启动的内核拥有(或将要拥有)多少共享内存,因为您可以自己设置该值。 但是设备方面呢? 可以很容易地将上限编译为该大小,但是该信息对于设备不可用(除非显式传递)。 ...

动态并行性-将共享内存的内容传递给生成的块? - Dynamic parallelism - passing contents of shared memory to spawned blocks?

虽然我已经写了一段时间的CUDA内核,但我还没有使用动态并行(DP)。 我遇到了我认为可能适合的任务; 但是,我希望能够使用DP的方式是: 如果block发现需要更多线程来完成工作,则会生成它们。 它向其产生的线程赋予“所知”-本质上是其共享内存的内容, 每个产生线程的块都在其自己的 ...

同一线程两次访问同一存储体会导致冲突吗? - Will the same thread accessing the same memory bank twice cause conflicts?

我正在做一个向量减少的内核。 它基本上将向量中的所有位置相加,并将结果存储在位置0中。 我正在遵循此方案,使用512个float元素块: 编码: 奇怪的是,我期望得到银行的共同冲突,但事实并非如此。 在第一次迭代中,线程0将位置0和位置256相加,它们位于同一组中。 ...


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