thrust相关内容

有没有更好更快的方法使用推力从 CPU 内存复制到 GPU?

最近我一直在使用推力.我注意到,为了使用推力,必须始终将数据从 cpu 内存复制到 gpu 内存. 让我们看看下面的例子: int foo(int *foo){host_vectorm(foo, foo+ 100000);device_vectors = 米;} 我不太确定 host_vector 构造函数是如何工作的,但似乎我正在复制初始数据,来自 *foo,两次 - ..
发布时间:2022-01-10 16:16:31 其他开发

使用 CUDA Thrust 查找最大元素值及其位置

如何不仅获取值,还获取最大(最小)元素(res.val 和 res.pos)的位置? thrust::host_vectorh_vec(100);推力::生成(h_vec.begin(),h_vec.end(),兰德);推力::device_vectord_vec = h_vec;T res = -1;res = 推力::reduce(d_vec.begin(), d_vec.end() ..
发布时间:2022-01-10 16:13:27 其他开发

cuda9 + 推力 sort_by_key 覆盖 H2D 副本(使用流)

我想将推力::sort_by_key 操作与主机到设备的副本重叠.尽管将 cudaStream_t 作为参数,但我的实验似乎表明,thrust::sort_by_key 是一个阻塞操作.下面我附上一个完整的代码示例,首先我测量复制数据的时间(从固定内存),然后测量执行 sort_by_key 的时间.最后,我尝试重叠这两个操作.我希望看到 sort_by_key 操作隐藏的复制时间.相反,我发现叠 ..
发布时间:2022-01-10 16:10:10 C/C++开发

推力::序列 - 如何在每个 N 个元素之后增加步长

我正在使用 thrust::sequence(myvector.begin(), myvector.end(), 0, 1) 并获得良好的有序列表,例如: 0, 1, 2, 3, 4 我的问题是如何实现下面的这样一个列表(最好的方法?) 0, 0, 0, 1, 1, 1, 2, 2 ,2, 3, 3, 3 我知道怎么用函子来做,所以请不要试图用函子来回答.我想了解在 Thrust 中是 ..
发布时间:2022-01-10 16:08:02 其他开发

简单的 CUDA 推力程序错误

我只是写了一个简单的 CUDA Thrust 程序,但是当我运行它时.我收到了这个错误:thrust::system::system_error at position 0x0037f99c . 谁能帮我弄清楚为什么会这样? #include#include#include使用命 ..
发布时间:2022-01-10 16:06:39 其他开发

静态推力自定义分配器?

设置几个事实: Thrust 并非所有操作都在原地操作. 您可以为 thrust::device_vectors 提供自定义分配器. 我查看了 thrust::system 和 thrust::system::cuda 并没有找到任何看起来像静态系统分配器的东西.我的意思是,我看不到替换推力在内部使用的分配器为异地算法分配额外内存的方法. 我也很难相信没有就地的函数使用给定 t ..
发布时间:2022-01-10 16:01:40 其他开发

设备内存上的推力减小结果

是否可以将thrust::reduce 操作的返回值留在设备分配的内存中?如果是的话,是否像将值分配给 cudaMalloc'ed 区域一样简单,还是应该使用推力::device_ptr? 解决方案 是否可以将推力::reduce 操作的返回值留在设备分配的内存中? 简短的回答是否定的. thrust reduce 返回一个数量,即减少的结果.此数量必须存放在主机常驻变量中 ..
发布时间:2022-01-10 16:00:46 其他开发

使用 CUDA Thrust 多次复制向量

我正在尝试使用 CUDA Thrust 解决问题. 我有一个包含 3 元素的主机数组.是否可以使用 Thrust 创建一个包含 384 元素的设备数组,其中我的主机数组中的 3 元素重复 128 次(128 x 3 = 384)? 一般来说,从3个元素的数组开始,如何使用Thrust生成一个X大小的设备数组,其中X = Y x3,即Y是重复次数? 解决方案 一种可能的方法: ..
发布时间:2022-01-10 15:55:50 其他开发

让 CUDA Thrust 使用您选择的 CUDA 流

查看 CUDA Thrust 代码中的内核启动,似乎它们总是使用默认流.我可以让 Thrust 使用我选择的流吗?我是否遗漏了 API 中的某些内容? 解决方案 我想在 Thrust 1.8 发布后更新 talonmies 提供的答案,它引入了将 CUDA 执行流指示为的可能性 thrust::cuda::par.on(stream) 另见 推力发布 1.8.0. 在下面, ..
发布时间:2022-01-10 15:54:29 其他开发

快速 CUDA 推力自定义比较运算符

我正在评估 CUDA,目前正在使用 Thrust 库对数字进行排序. 我想为推力::排序创建自己的比较器,但它的速度大大减慢!我通过从 functional.h 复制代码创建了自己的 less 实现.但是,它似乎以其他方式编译并且运行速度非常慢. 默认比较器:thrust::less() - 94ms 我自己的比较器:less() - 906ms 我使用的是 Visual St ..
发布时间:2022-01-10 15:54:21 其他开发

使用 CUDA Thrust 确定每个矩阵列中的最小元素及其位置

我有一个相当简单的问题,但我想不出一个优雅的解决方案. 我有一个 Thrust 代码,它生成包含值的相同大小的 c 向量.假设这些 c 向量中的每一个都有一个索引.我想为每个向量位置获取值最低的 c 向量的索引: 例子: C0 = (0,10,20,3,40)C1 = (1,2 ,3 ,5,10) 我会得到一个包含 C 向量索引的向量,该向量具有最低值: 结果 = (0,1 ,1 ..
发布时间:2022-01-10 15:53:44 C/C++开发

如何使用 CUDA 生成随机排列

我可以使用哪些并行算法从给定集合中生成随机排列?特别是适合 CUDA 的提案或论文链接会很有帮助. Fisher-Yates shuffle 的顺序版本. 例子: 令 S={1, 2, ..., 7} 为源索引集.目标是并行生成 n 个随机排列.n 个排列中的每一个都只包含每个源索引一次,例如{7, 6, ..., 1}. 解决方案 Fisher-Yates shuffl ..
发布时间:2022-01-10 15:52:16 C/C++开发

从推力::设备向量到原始指针并返回?

我了解如何从向量转到原始指针,但我跳过了关于如何倒退的节拍. //我们的宿主向量推力::host_vectorhVec;//假设我们把数据放在这里//得到一个 device_vector推力::device_vectordVec = hVec;//获取设备指针推力::device_ptr devPtr = &d_vec[0];//现在我如何回到 device_vector ..
发布时间:2022-01-10 15:48:31 C/C++开发

如何在 cuda 5.5 中获得最大推力块

下面的 Thrust 函数可以获得 CUDA 启动 CUDA 5.0 的最大块数,该函数用于 CUSP 中的稀疏矩阵向量乘法 (SpMV),它是一种为持久线程设置执行的技术.第一行是头文件. #include 推力::细节::后端::cuda::arch::max_active_blocks(内核 ..
发布时间:2022-01-10 15:46:03 其他开发

检测推力变换的ptx核

我有以下推力::转换调用. my_functor *f_1 = new my_functor();推力::转换(data.begin(),data.end(),data.begin(),* f_1); 我想在 PTX 文件中检测它对应的内核.但是有很多内核在它们的名称中包含 my_functor. 例如- _ZN6thrust6system4cuda6detail6detail23la ..
发布时间:2022-01-10 15:45:33 其他开发

cuda-gdb 因推力而崩溃(CUDA 版本 5.5)

我有以下琐碎的thrust::gather 程序(直接取自thrust::gather 文档) #include #include 诠释主要(无效){//用 1 标记偶数索引;带有 0 的奇数索引整数值[10] = {1, 0, 1, 0, 1, 0, 1, 0, 1, 0};推力::device_vector ..
发布时间:2022-01-10 15:43:40 其他开发

计算 CUDA 数组中数字的出现次数

我有一个使用 CUDA 存储在 GPU 上的无符号整数数组(通常是 1000000 元素).我想计算数组中每个数字的出现次数.只有几个不同的数字(大约 10),但这些数字可以从 1 到 1000000.大约9/10的数字是0,我不需要他们的计数.结果如下所示: 58458 ->1000 次出现15 ->412 次出现 我有一个使用 atomicAdds 的实现,但它太慢了(很多线程写入同一个地 ..
发布时间:2022-01-10 15:41:28 其他开发