问题标签 [cub]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - CUB 的 TexRefInputIterator 是如何工作的?
CUB为纹理引用提供了一个迭代器,它的实现很容易访问。
由于我自己无法弄清楚如何实现可模板化的纹理引用——它们“只能被声明为静态全局变量” ——我现在正试图了解它是如何在 CUB 中完成的。但其中一些超出了我的 C++ 知识范围,我无法在其他地方找到答案(再说一次,我真的不知道要搜索什么)。
具体来说:
未命名的namespace
周围是否IteratorTexRef
重要?我只能认为这是限制IteratorTexRef::TexId::ref
在文件/翻译单元范围内。
目的是IteratorTexRef
什么?它只 wraps TexId
,但删除它会导致(对我而言)难以理解的编译时错误。
此代码是链接到实现的精简版本,编译并运行:
根据人们通常如何访问静态模板成员,我得到的最接近的是类似于下面的内容。为清楚起见,下面简单地IteratorTexRef
从上面消除:
它给出了这些有点深奥的编译时错误。nvcc iter.cu
(使用CUDA 7.0编译):
sorting - 如何对 CUDA 向量类型的数组进行排序
具体来说,我如何对数组进行排序float3
?这样.x
组件是主要排序标准,.y
组件是次要排序标准,.z
组件是三级排序标准。
是否有一个简单的解决方案可以对cub:: DeviceRadixSort
or进行一次调用thrust::sort_by_key
?
目前我在想也许我可以创建一个uint32
键数组,其中每个元素的前三分之一的数字取自输入数组的前三分之一的.x
组件,后三分之一的数字取自输入数组的前三分之一的.y
组件,其最后三分之一的数字取自输入数组.z
组件的前三分之一。还是有更好的解决方案?
cuda - cub 库支持的最大大小
有谁知道 cub::scan 支持的最大大小是多少?我得到了超过 5 亿输入大小的核心转储。我想确保我没有做错什么...
这是我的代码:
cuda - 同时使用 CUB 和 Thrust 进行并行和扫描
我正在尝试对测试向量进行并行求和扫描。为此,我同时使用 Thrust 和 CUB 库
我得到的错误是
我无法正确解释该错误,并且我确信我处理原始指针的方式存在问题。任何帮助表示赞赏。
cuda - 指定 gencode 时 CUB ReduceByKey 的结果不正确
在我的一个项目中,我在使用 CUB 的 DeviceReduce::ReduceByKey 时看到了一些不正确的结果。但是,使用带有thrust::reduce_by_key 的相同输入/输出会产生预期的结果。
当我包含“-gencode arch=compute_35,code=sm_35”(对于 Kepler GTX Titan)时,它会产生错误的结果,但是当我完全忽略这些标志时,它会起作用。
我使用了一些其他 CUB 调用没有问题,只是这个行为不端。我还尝试在 GTX 1080 Ti(使用 compute_61、sm_61)上运行此代码并看到相同的行为。
省略这些编译器标志是正确的解决方案吗?
在一台机器上试过:
- 库达 8.0
- Ubuntu 16.04
- 海合会 5.4.0
- 幼崽 1.6.4
- Kepler GTX Titan(计算能力 3.5)
另一个是:
- 库达 8.0
- Ubuntu 16.04
- 海合会 5.4.0
- 幼崽 1.6.4
- Pascal GTX 1080 Ti(计算能力 6.1)
sorting - 在 cub 中对共享内存数组进行排序
我想使用 cub 为我在每个块中排序一个数组。我用多个块调用内核,每个块有 32 个线程,每个线程都有一个 27 个整数的数组。根据 cubs github 页面的标准排序如下所示:
稍后我需要将单元格放在共享内存中,如下所示:
是否可以在 cub 中对已经驻留在共享内存中的数组进行排序?还是我必须在排序后将所有数组加载到共享内存中。
或者是否可以选择将所有单元格存储在全局内存中,并通过 cub 设备函数对它们进行排序,但由特定大小的块分隔?
c++ - 类似于推力的CUB模板
以下是推力代码:
这里,thrust::reduce
接受第一个和最后一个输入迭代器,推力将值返回给 CPU(复制到 h_in_value)
可以使用 CUB 获得此功能吗?
- First 和 Last 迭代器作为输入
- 将结果返回给主机
cuda - 在 nvidia nsight 中安装 CUB
我想将 CUB 与 NVIDIA Nsight 一起使用。我在互联网上寻找了这样做的教程,但我没有找到任何东西,即使在官方页面 pf CUB 中也是如此。
为了在使用 NVIDIA Nsight 编写的代码中使用 CUB,我需要做什么?