问题标签 [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.
cuda - push::min_element 在 float4 device_vector 上不起作用,而在 host_vector 上起作用
我正在尝试使用 Thrust 和 CUDA 找到数组中的最小值。
以下设备示例返回 0 :
但是,此主机版本完美运行:
比较器类型:
我只是想添加该thrust::sort 与相同的谓词一起使用。
cuda - 如何使用 Thrust 从 int2 数组计算平均值
我正在尝试计算包含点(x,y)的某个数组的平均值。
是否可以使用推力来找到表示为 (x,y) 点的平均点?thrust::device_vector<int>
当每个单元格包含点的绝对位置时,我也可以将数组表示为 a ,这意味着i*numColumns + j
尽管我不确定平均数是否代表平均单元格。
谢谢!
cuda - 有没有更好更快的方法使用推力从 CPU 内存复制到 GPU?
最近我一直在使用推力。我注意到,为了使用推力,必须始终将数据从 cpu 内存复制到 gpu 内存。
让我们看看下面的例子:
我不太确定host_vector
构造函数是如何工作的,但似乎我正在复制初始数据,来自*foo
,两次 - 一次是在初始化时复制到 host_vector,另一次device_vector
是在初始化时。有没有更好的方法从 cpu 复制到 gpu 而无需制作中间数据副本?我知道我可以device_ptr
用作包装器,但这仍然不能解决我的问题。
谢谢!
c - 很少重复键的推力::reduce_by_key 性能
我必须使用许多不同的键对数组进行键控减少,这些键只在一段时间内重复一次:
使用thrust::reduce_by_key
(或任何其他分段缩减方法)在这里并不是最快的选择,因为大多数操作实际上只是从一个数组复制到另一个数组。
解决这个问题的更好方法是什么?
cuda - 如何将静态成员添加到推力::binary_predicate?
我正在尝试将静态成员添加到以下类型:
但我不断收到错误:
我的猜测是 CUDA 不能引用这个成员。我该如何解决?
cuda - 推力:如何从主机阵列创建 device_vector?
我从主机上的库中获取一些数据作为指向数组的指针。如何创建一个在设备上保存此数据的 device_vector?
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() 迭代器一起正常工作。
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..
是什么导致了问题?
cuda - 如何将 device_vector 的每个元素递减一个常数?
我正在尝试thrust::transform
从 a 的每个元素中减少一个常量值device_vector
。如您所见,最后一行是不完整的。我试图从所有元素中减少常数fLowestVal
,但不知道具体如何。
另一个问题:一旦我对 进行更改device_vector
,这些更改是否也适用于p
数组?
谢谢!
cuda - 通过推力::min_element 查找 cudaMalloc 数组的最小元素位置
我正在尝试在某个 CUDA 数组中找到最小的元素
p
是线性设备内存,并且pWrapper
是thrust::device_ptr
.
当我使用device_vector
时,很容易找到最小元素的位置
与此相反,当提供给min_element
调用的类型是 adevice_ptr
时,返回类型min_element
是float *p
(根据定义的模板device_vector
)。从我刚刚提供的代码片段中,我无法分辨最小值的位置以及如何从数组中提取它。
我试图从min_element
两者的地址的返回类型中减去p
,pWrapper
但都没有奏效。