问题标签 [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 回答
1274 浏览

compiler-errors - Thrust(CUDA 库)编译错误,例如“'vectorize_from_shared_kernel__entry':不是 'thrust::detail::device::cuda' 的成员”

我使用 CUDA VS Wizard 创建了一个 VS 项目,并尝试使用 Thrust 构建一个 cuda 程序,测试程序非常简单:

我会得到一些编译错误,例如:

c(29):错误 C2039:“vectorize_from_shared_kernel__entry”:不是“thrust::detail::device::cuda”的成员 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000- 3_sample.cudafe1.stub.c(29):错误 C2039:“vectorize_from_shared_kernel__entry”:不是“thrust::detail::device::cuda”的成员 1>C:\DOCUME~1\ADMINI~1\LOCALS~ 1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(29):错误 C2065:'vectorize_from_shared_kernel__entry':未声明的标识符 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample。 .stub.c(29) : error C2062: type 'int' unexpected 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36) : 错误 C2143 :语法错误:缺少';' 在'<' 1>C 之前:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2182:'__wrapper__device_stub_vectorize_from_shared_kernel':非法使用类型 'void' 1>C:\DOCUME~1 \ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2988:无法识别的模板声明/定义 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp /tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2059:语法错误:'<' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub。 c(38):错误 C2143:语法错误:缺少“;” 在 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) 之前:致命错误 C1506:不可恢复的块范围错误 错误 C2182:'__wrapper__device_stub_vectorize_from_shared_kernel':非法使用类型 'void' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2988:无法识别模板声明/定义 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2059:语法错误:'<' 1>C:\ DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38):错误 C2143:语法错误:缺少 ';' 在 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) 之前:致命错误 C1506:不可恢复的块范围错误 错误 C2182:'__wrapper__device_stub_vectorize_from_shared_kernel':非法使用类型 'void' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2988:无法识别模板声明/定义 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2059:语法错误:'<' 1>C:\ DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38):错误 C2143:语法错误:缺少 ';' 在 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) 之前:致命错误 C1506:不可恢复的块范围错误 \DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2988:无法识别的模板声明/定义 1>C:\DOCUME~1\ADMINI~1\LOCALS ~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2059:语法错误:'<' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample。 cudafe1.stub.c(38):错误 C2143:语法错误:缺少“;” 在 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) 之前:致命错误 C1506:不可恢复的块范围错误 \DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2988:无法识别的模板声明/定义 1>C:\DOCUME~1\ADMINI~1\LOCALS ~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(36):错误 C2059:语法错误:'<' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample。 cudafe1.stub.c(38):错误 C2143:语法错误:缺少“;” 在 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) 之前:致命错误 C1506:不可恢复的块范围错误 语法错误:'<' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38):错误 C2143:语法错误:缺少 ';' 在 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) 之前:致命错误 C1506:不可恢复的块范围错误 语法错误:'<' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38):错误 C2143:语法错误:缺少 ';' 在 '}' 1>C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/tmpxft_00003cc0_00000000-3_sample.cudafe1.stub.c(38) 之前:致命错误 C1506:不可恢复的块范围错误

但是,如果我注释掉第二条语句“X.resize(100);”,它就可以构建成功。所以我猜推力设置,构建规则设置和CUDA设置是正确的。你知道为什么会出现这些编译错误吗?

我正在使用 VS 2008、CUDA 2.3 和 Thrust 1.1。

0 投票
1 回答
2339 浏览

c++ - 用推力调用手写的 CUDA 内核

因为我需要使用 CUDA 对大量数字进行排序,所以我使用了推力。到目前为止,一切都很好......但是当我想调用一个“手写”内核时,有一个包含数据的推力::host_vector 怎么办?

我的方法是(缺少备份):

内核看起来像:

但编译失败:

错误:“float **”类型的参数与“thrust::host_vector> *”类型的参数不兼容

咦?!我以为我在给出浮点和整数原始指针?还是我错过了什么?

0 投票
1 回答
2276 浏览

c++ - 在循环中使用 Thrust 优化 CUDA

给定以下一段代码,使用推力(CUDA 的 C++ 模板库)生成一种带有 CUDA 的代码字典:

问题是,通过使用 CUDA 视觉分析器,我注意到了 4 个字节的多个副本。IMO 这是由

  1. 循环计数器i
  2. 浮点代码整数计数分布
  3. 每次访问i和上面提到的变量

这似乎减慢了一切(连续复制 4 个字节并不好玩......)。

那么,我如何告诉推力,这些变量应在设备上处理?还是他们已经?

使用推力::device_ptr 对我来说似乎还不够,因为我不确定 for 循环是在主机上还是在设备上运行(这也可能是运行缓慢的另一个原因)。

0 投票
1 回答
2368 浏览

cuda - CUDA on Thrust:如何实现优先级队列

我的计划是使用 Pearsons 的相关性计算距离矩阵,并从距离矩阵中获取每个节点 (q=ln(n)) 的 q-最近邻,并将它们放入结果向量中。我在 C++ 中使用相关函数循环内的 STL 优先级队列来完成它。

但是你认为,有什么办法可以在 GPU 中做到这一点吗?

  1. 谁能帮助我,我怎么能在 GPU 中做同样的事情(可能推力对我来说会更容易!)
  2. 如何在 GPU中实现优先级队列?

这是我的 CPU(C++ STL)代码:

例如,

0 投票
3 回答
838 浏览

c++ - 推力图;原生CUDA编译问题... Linux

我正在尝试从推力图编译一个简单的示例。

目前,我已将所有内容都注释掉了main(void)

我正在寻找有人愿意给出的任何方向!

我的编译错误是这样的:

我发现了第一个错误,即include/thrust/detail/device/cuda/reduce_by_keyvalue.inl文件的第 90 行,但我看不出问题出在哪里。我是 C++ 的新手(而且我对 C 的了解是初学者的水平)。就模板文件而言,一切看起来都很好,如果 NVIDIA 的人不知道他们在做什么,我会感到震惊——所以一定是我。

第 90 行左右的代码:

目前我的主要代码中唯一的代码:(其他所有内容都已注释。)

0 投票
3 回答
7503 浏览

visual-studio-2010 - 解决推力/CUDA 警告“无法分辨指针指向的...”

我正在尝试使用 Thrust/CUDA 4.0 构建一个简单的应用程序并收到很多警告“警告:无法判断指针指向的内容,假设全局内存空间”

有没有其他人看到过这个,我该如何禁用它们或修复我的代码?

谢谢,

阿德

这是我的代码。

你好.h

你好.cu

输出

这些有很多。

0 投票
1 回答
274 浏览

cuda - Cuda 性能问题

也许这个问题有点太笼统了,但也许有人遇到过同样的问题。

我有一个使用推力的小型 cuda 程序,一切都很好。它按预期工作。

但是当我将同一个程序移植到另一台机器上时,整个程序的性能比原来的机器慢了大约 10 到 100 倍。第二台机器的硬件应该更快(GTX480而不是GTX265),所以我猜问题出在第二台机器本身。有谁知道可能出了什么问题?

0 投票
5 回答
8164 浏览

sorting - 使用 Thrust CUDA 对对象进行排序

是否可以使用 Thrust 库对对象进行排序?我有以下结构:

是否可以使用推力来根据 N 对 OB 数组进行排序?您能否提供一个使用推力对对象进行排序的简单示例?如果推力不能这样做,是否有任何其他 CUDA 库允许我这样做?

0 投票
4 回答
20878 浏览

cuda - 推进用户编写的内核

我是 Thrust 的新手。我看到所有 Thrust 演示文稿和示例仅显示主机代码。

我想知道是否可以将 device_vector 传递给我自己的内核?如何?如果是,内核/设备代码中允许的操作是什么?

0 投票
2 回答
3433 浏览

cuda - 推力:删除键值数组中的重复项

我有一对大小相等的数组,我将它们称为键和值。

例如:

对键进行排序,并对与每个键关联的值进行排序。如何删除与每个键及其对应键关联的重复值?

也就是说,我想将以上内容压缩为:

我查看了Thrust中可用的流压缩功能,但找不到任何这样做的东西。推力可以做到这一点吗?还是我需要编写自己的内核来标记模板中的重复项,然后删除它们?