问题标签 [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 投票
2 回答
663 浏览

c++ - 确定最大推力长度::device_vector

有没有办法确定thrust::device_vector<T>您可以安全分配的最大大小?

0 投票
2 回答
5759 浏览

c++ - 推力结构向量的迭代器

我正在尝试以这种方式访问​​矢量元素

device_vector 已正确初始化。我收到以下错误:

我究竟做错了什么?

0 投票
1 回答
1323 浏览

sorting - 推力:由于内存分配,sort_by_key 缓慢

我正在做一个sort_by_key大小为 8000 万的键值 int 数组。该设备是具有2GB VRAM的GTX 560 Ti 。当 sort_by_key 之前的可用(空闲)内存为时,它将完成排序。但是,当可用内存下降到 时,相同键值数组的 sort_by_key 需要!1200MB200ms600MB1.5-3s

我在Compute Visual Profiler下运行该程序。我发现 GPU 时间戳在之前的最后一个内核sort_by_key 和内部的第一个内核调用sort_by_key(即 a RakingReduction)之间跳跃了 1.5-3 秒。

sort_by_key我怀疑在调用它的第一个内部内核之前,内部已经完成了内存分配。需要的内存sort_by_key 是可用的(即使可用内存是600MB),因为 sort_by_key工作正常,即使速度较慢。我看到发生这种情况时计算机会冻结 1 秒。如果我保持进程资源管理器打开,我还会在 CPU物理内存图中看到一个凸起 。

当可用内存较少时,我能做些什么来使这项sort_by_key工作同样快吗?此外,导致内存碰撞和暂时冻结的设备和主机之间发生了什么?

0 投票
3 回答
6491 浏览

cuda - 在 CUDA 中按键对 3 个数组进行排序(可能使用 Thrust)

我有3相同大小的数组(超过300.000元素)。一个浮点数数组和两个索引数组。因此,对于每个数字,我都有2ID。

所有3数组都已经在 GPU 全局内存中。我想用他们的 ID 对所有数字进行相应的排序。

有什么方法可以使用 Thrust 库来完成这项任务吗?有没有比 Thrust 库更好的方法?

当然,我不想将它们复制到主机内存或从主机内存复制几次。顺便说一句,它们是数组而不是向量。

提前感谢您的帮助。


暂定解决方案,但这非常慢。这几乎需要几4秒钟,我的数组大小是300000

0 投票
2 回答
3168 浏览

c++ - 通过引用将推力::device_vector 传递给函数

我正在尝试传递device_vector结构

以下列方式传递给函数:

myvector 已正确初始化

我收到以下错误:

它出什么问题了?

0 投票
1 回答
476 浏览

c++ - GCC 中不可避免的可变参数模板(与 CUDA 一起使用)?

我在 Linux/GCC 上尝试了一些 CUDA/Thrust 代码并想使用一些 TR1 库,当我注意到一些特殊情况时:大多数库总是会引入tr1_impl/type_traits(4.4)或只是type_traits(4.6),并且该标头将始终包含可变参数模板,像这样:

但是,当我在 C++98 或 C++03 模式下运行 GCC 时,也会使用这些头文件!这怎么行?

我遇到的实际问题是 CUDA 工具链不识别 C++0x 结构,并且cudafe++(CUDA 前端,即将联合源代码分离为主机和设备源代码的程序)在遇到错误时正确中止可变参数模板参数。

那么... GCC 如何支持和依赖 C++ 的非 0x 方言中的可变参数模板?有没有办法获得TR1的正版C++03版本?

0 投票
1 回答
1379 浏览

c++ - CUDA 推力返回类型

我目前正在尝试使用 Thrust 库,但我遇到了返回类型的问题。

给出错误:

有人可以向我解释一下返回类型应该是什么吗?

根据文档,返回类型是

但是,这对我不起作用,有人可以解释一下吗!

谢谢!

0 投票
1 回答
3529 浏览

c++ - CUDA 推力性能

我有一个 640*480 的向量,其中包含一组数字,我希望找到向量每行的最小和最大数。

但是这非常慢,有什么办法可以加快速度吗?

  • 运行时 GPU 上的当前负载仅为 34%,所以必须有办法改善这一点?
0 投票
1 回答
156 浏览

c++ - 推力库 - 如何编写包装器?

我有一个用 C++ 编写的 VS2010 项目,想使用推力::sort 函数。我的数据当前位于 POD(普通旧日期)结构中。推力::排序例程需要主机和设备向量容器才能工作。连接我的 POD 数据以供thrust::sort 使用的最简单方法是什么?

谢谢,戴夫

0 投票
1 回答
2248 浏览

c++ - 如何使用 CUDA/Thrust 根据其中一个数组中的值对两个数组/向量进行排序

这是一个关于编程的概念性问题。

总而言之,我有两个数组/向量,我需要对一个数组/向量进行排序,其中一个也传播到另一个数组中,这样如果我对 arrayOne 进行排序,对于排序中的每个交换,同样的事情也会发生在 arrayTwo 上。现在,我知道 std::sort 允许您定义一个比较函数(对于我假设的自定义对象),我正在考虑定义一个来同时交换 arrayTwo。

所以我想要的是 -使用 CUDA 根据其中一个向量中的值对这两个向量进行排序。

这是我不确定性上升的地方,本质上我想使用 Thrust 库进行排序。是否支持自定义比较函数的定义?如果是这样,我仍然没有弄清楚如何在 arrayTwo 中传播更改(因为它将基于 CUDA)。

我真的没有时间在 CUDA 上实现自定义并行快速排序,就像我应该/想要的那样。

原因

本质上,我需要对一堆变量数组与单个数组(想想回归树)进行排序和计算。当然,我需要尽快这样做,基于 CPU 的排序还不够快。

#更新

我应该强调,我在主机上对两者进行排序没有问题,我正在寻找使用CUDA的解决方案。谢谢。

#更新 2

我想我实际上很幸运并找到了解决方案,因为我发布了这个问题,事实证明 Thrust 实际上提供了我正在寻找的默认内容:

*取自http://code.google.com/p/thrust/wiki/QuickStartGuide#Fancy_Iterators *

所以,现在我要做的就是从两个数组中取出两个推力::device_vectors(我必须从二维数组中取出)。快乐的。