问题标签 [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.
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。
c++ - 用推力调用手写的 CUDA 内核
因为我需要使用 CUDA 对大量数字进行排序,所以我使用了推力。到目前为止,一切都很好......但是当我想调用一个“手写”内核时,有一个包含数据的推力::host_vector 怎么办?
我的方法是(缺少备份):
内核看起来像:
但编译失败:
错误:“float **”类型的参数与“thrust::host_vector> *”类型的参数不兼容
咦?!我以为我在给出浮点和整数原始指针?还是我错过了什么?
c++ - 在循环中使用 Thrust 优化 CUDA
给定以下一段代码,使用推力(CUDA 的 C++ 模板库)生成一种带有 CUDA 的代码字典:
问题是,通过使用 CUDA 视觉分析器,我注意到了 4 个字节的多个副本。IMO 这是由
- 循环计数器i
- 浮点代码、整数计数和分布
- 每次访问i和上面提到的变量
这似乎减慢了一切(连续复制 4 个字节并不好玩......)。
那么,我如何告诉推力,这些变量应在设备上处理?还是他们已经?
使用推力::device_ptr 对我来说似乎还不够,因为我不确定 for 循环是在主机上还是在设备上运行(这也可能是运行缓慢的另一个原因)。
cuda - CUDA on Thrust:如何实现优先级队列
我的计划是使用 Pearsons 的相关性计算距离矩阵,并从距离矩阵中获取每个节点 (q=ln(n)) 的 q-最近邻,并将它们放入结果向量中。我在 C++ 中使用相关函数循环内的 STL 优先级队列来完成它。
但是你认为,有什么办法可以在 GPU 中做到这一点吗?
- 谁能帮助我,我怎么能在 GPU 中做同样的事情(可能推力对我来说会更容易!)
- 如何在 GPU中实现优先级队列?
这是我的 CPU(C++ STL)代码:
例如,
c++ - 推力图;原生CUDA编译问题... Linux
我正在尝试从推力图编译一个简单的示例。
目前,我已将所有内容都注释掉了main(void)
我正在寻找有人愿意给出的任何方向!
我的编译错误是这样的:
我发现了第一个错误,即include/thrust/detail/device/cuda/reduce_by_keyvalue.inl
文件的第 90 行,但我看不出问题出在哪里。我是 C++ 的新手(而且我对 C 的了解是初学者的水平)。就模板文件而言,一切看起来都很好,如果 NVIDIA 的人不知道他们在做什么,我会感到震惊——所以一定是我。
第 90 行左右的代码:
目前我的主要代码中唯一的代码:(其他所有内容都已注释。)
visual-studio-2010 - 解决推力/CUDA 警告“无法分辨指针指向的...”
我正在尝试使用 Thrust/CUDA 4.0 构建一个简单的应用程序并收到很多警告“警告:无法判断指针指向的内容,假设全局内存空间”
有没有其他人看到过这个,我该如何禁用它们或修复我的代码?
谢谢,
阿德
这是我的代码。
你好.h
你好.cu
输出
这些有很多。
cuda - Cuda 性能问题
也许这个问题有点太笼统了,但也许有人遇到过同样的问题。
我有一个使用推力的小型 cuda 程序,一切都很好。它按预期工作。
但是当我将同一个程序移植到另一台机器上时,整个程序的性能比原来的机器慢了大约 10 到 100 倍。第二台机器的硬件应该更快(GTX480而不是GTX265),所以我猜问题出在第二台机器本身。有谁知道可能出了什么问题?
sorting - 使用 Thrust CUDA 对对象进行排序
是否可以使用 Thrust 库对对象进行排序?我有以下结构:
是否可以使用推力来根据 N 对 OB 数组进行排序?您能否提供一个使用推力对对象进行排序的简单示例?如果推力不能这样做,是否有任何其他 CUDA 库允许我这样做?
cuda - 推进用户编写的内核
我是 Thrust 的新手。我看到所有 Thrust 演示文稿和示例仅显示主机代码。
我想知道是否可以将 device_vector 传递给我自己的内核?如何?如果是,内核/设备代码中允许的操作是什么?
cuda - 推力:删除键值数组中的重复项
我有一对大小相等的数组,我将它们称为键和值。
例如:
对键进行排序,并对与每个键关联的值进行排序。如何删除与每个键及其对应键关联的重复值?
也就是说,我想将以上内容压缩为:
我查看了Thrust中可用的流压缩功能,但找不到任何这样做的东西。推力可以做到这一点吗?还是我需要编写自己的内核来标记模板中的重复项,然后删除它们?