问题标签 [thrust]

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.

0 投票
1 回答
756 浏览

cuda - push::min_element 在 float4 device_vector 上不起作用,而在 host_vector 上起作用

我正在尝试使用 Thrust 和 CUDA 找到数组中的最小值。
以下设备示例返回 0 :

但是,此主机版本完美运行:

比较器类型:

我只是想添加该thrust::sort 与相同的谓词一起使用。

0 投票
2 回答
3265 浏览

cuda - 如何使用 Thrust 从 int2 数组计算平均值

我正在尝试计算包含点(x,y)的某个数组的平均值。
是否可以使用推力来找到表示为 (x,y) 点的平均点?thrust::device_vector<int>当每个单元格包含点的绝对位置时,我也可以将数组表示为 a ,这意味着i*numColumns + j尽管我不确定平均数是否代表平均单元格。
谢谢!

0 投票
1 回答
2558 浏览

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

最近我一直在使用推力。我注意到,为了使用推力,必须始终将数据从 cpu 内存复制到 gpu 内存。
让我们看看下面的例子:

我不太确定host_vector构造函数是如何工作的,但似乎我正在复制初始数据,来自*foo,两次 - 一次是在初始化时复制到 host_vector,另一次device_vector是在初始化时。有没有更好的方法从 cpu 复制到 gpu 而无需制作中间数据副本?我知道我可以device_ptr用作包装器,但这仍然不能解决我的问题。
谢谢!

0 投票
1 回答
1333 浏览

c - 很少重复键的推力::reduce_by_key 性能

我必须使用许多不同的键对数组进行键控减少,这些键只在一段时间内重复一次:

使用thrust::reduce_by_key(或任何其他分段缩减方法)在这里并不是最快的选择,因为大多数操作实际上只是从一个数组复制到另一个数组。

解决这个问题的更好方法是什么?

0 投票
1 回答
645 浏览

cuda - 如何将静态成员添加到推力::binary_predicate?

我正在尝试将静态成员添加到以下类型:

但我不断收到错误:

我的猜测是 CUDA 不能引用这个成员。我该如何解决?

0 投票
1 回答
7570 浏览

cuda - 推力:如何从主机阵列创建 device_vector?

我从主机上的库中获取一些数据作为指向数组的指针。如何创建一个在设备上保存此数据的 device_vector?

0 投票
1 回答
792 浏览

cuda - 使用 zip_iterator 值时推动 sort_by_key 问题

我正在尝试在 cuda 中使用带有 sort_by_key() 的 zip_iterator,并且 zip_iterator 中的值在排序期间没有重新排序(数据的位置与原来的位置相同)。

示例代码:

我期望这段代码做的是基于 keyVec 中的值(它正确地执行)排序,同时保持 fooVec 和 barVec 的顺序。这不是 sort_by_key 所做的吗?sort_by_key 是否与 zip_iterators 一起使用?从 zip_iterator 设置/提取数据时,我做错了什么吗?如果此方法不正确,保持值排序的正确方法是什么?

前任:

使用 CUDA 4.1 附带的 Thrust

系统详情:

更新:仍然无法让 sort_by_key() 与 zip_iterators 一起使用,但它可以与标准推力::device_vector<>.begin() 迭代器一起正常工作。

0 投票
1 回答
3574 浏览

foreach - 如何解决 CUDA Thrust 库 - for_each 同步错误?

我正在尝试使用 CUDA 的推力库在 CUDA 中修改一个简单的动态向量。但是我在屏幕上收到“launch_closure_by_value”错误,表明该错误与某些同步过程有关。

由于此错误,无法进行简单的一维动态数组修改。

导致错误的我的代码段如下。

从 .cpp 文件中,我调用 setIndexedGrid,它在 System.cu 中定义

System.cu 中的代码段:

grid_functor 在 _kernel.cu 中定义

我也在输出窗口中得到这些(我使用 Visual Studio):

Particles.exe 中 0x000007fefdc7cacd 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x0029eb60 处的 cudaError_enum ..smokeParticles.exe 中 0x000007fefdc7cacd 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x0029ecf0 处的推力::system::system_error.. Particles.exe 中 0x000007fefdc7cacd 处未处理的异常:Microsoft C++ 异常:内存位置 0x0029ecf0..

是什么导致了问题?

0 投票
2 回答
1236 浏览

cuda - 如何将 device_vector 的每个元素递减一个常数?

我正在尝试thrust::transform从 a 的每个元素中减少一个常量值device_vector。如您所见,最后一行是不完整的。我试图从所有元素中减少常数fLowestVal,但不知道具体如何。

另一个问题:一旦我对 进行更改device_vector,这些更改是否也适用于p数组?

谢谢!

0 投票
2 回答
1148 浏览

cuda - 通过推力::min_element 查找 cudaMalloc 数组的最小元素位置

我正在尝试在某个 CUDA 数组中找到最小的元素

p是线性设备内存,并且pWrapperthrust::device_ptr.

当我使用device_vector时,很容易找到最小元素的位置

与此相反,当提供给min_element调用的类型是 adevice_ptr时,返回类型min_elementfloat *p(根据定义的模板device_vector)。从我刚刚提供的代码片段中,我无法分辨最小值的位置以及如何从数组中提取它。

我试图从min_element两者的地址的返回类型中减去ppWrapper但都没有奏效。