
[英]thrust::make_zip_iterator - What happens with inconsistent iterator ranges?
我目前正在尝试理解以下使用 thrust 并行处理的 boost 库示例。struct lorenz_system { struct lorenz_functor { template< class T > __host__ __devi ...
[英]thrust::make_zip_iterator - What happens with inconsistent iterator ranges?
我目前正在尝试理解以下使用 thrust 并行处理的 boost 库示例。struct lorenz_system { struct lorenz_functor { template< class T > __host__ __devi ...
[英]A thrust problem: How can I copy a host_vector to device_vector with a customized permutation order?
我在主机中有一个数组,我想以不同的顺序将它传输到设备。 我试过这个玩具代码符合nvc++ test.cpp -stdpar 问题是thrust::copy不允许从主机复制到设备,我怎样才能绕过这个限制? ...
[英]How do I thrust::sort() or thrust::sort_by_key() with raw pointers
我想使用带有 thrust::sort() 和 thrust::sort_by_key() 的原始设备指针对数组进行排序,因为它使用基数排序。 数据位于原始 uint64_t 设备指针中,我使用随机元素进行初始化以进行测试。 我查看了推力库,看到了一些简单地传入一个数组变量和数组变量加上大小的示例 ...
[英]Parallelization of a for loop consisting of Thrust Transforms
我已经实现了一个由多个 Thrust 转换组成的 for 循环。 我的目标是为i从 0 到N的每个值计算r[i] 。 简单来说, r是一个列向量,它的每一个元素都可以独立计算。 因此,我正在寻找一种并行化下面给出的 for 循环的方法:for(int i=0; i < N; i++) { ...
[英]How to use thrust::remove_if to check and remove blocks 2×i and 2×i+1 together
我使用的是 Cuda C++,我有一个大数组Arr ,其中包含如下形式的 64 位无符号整数: Arr中的项目数是2n ,这是一个偶数。 现在,给定一个 boolean function f(int a, int b),我想知道我是否可以使用 thrust::remove_if 来检查 f(a1 ...
[英]CUDA, how to find the first item in an array that makes a function maximal
在Cuda C++中,我有一个很大的整数数组Arr和一个 function F: int -> int 。 我想在Arr中找到使F最大的某些项目的第一个索引。 我如何编写一个 kernel 始终保持最大值(在F中)与其他使用原子的东西进行比较以避免面临竞争条件问题? 顺便说一句,我想知道我是否 ...
[英]Using thrust to handle vectors in CUDA classes?
我对推力在 c++ 类中的适用性有疑问。 我正在尝试实现一个 class object 接收 (x,y,z) 顶点坐标作为 ver1、ver2 和 ver3。 然后,分配给一个三角形并计算面积和法向量。 但是,我不太明白如何创建 class 的推力矢量。 这是我从文件中读取的顶点坐标,我想将它们发 ...
[英]How to multiply two iterators and return the product to a thrust::reduce algorithm?
我有这个 reduce_by_key 工作正常,除了我想将 dv_Vals 与另一个包含 0 或 1 值的向量 (dv_Active) 相乘,以便生成的产品是一个新的迭代器,其值来自 dv_Vals 或 0。 我尝试重写 reduce_by_key(用 make_transform_iterato ...
[英]thrust::sort_by_key() does not work for zip_iterator value
我正在尝试使用 sort_by_key() 对键值对进行排序,其中值是zip_iterator 。 但是使用这个,只有键被排序,而不是值。 这是我的示例代码#include <stdio.h> #include <thrust/iterator/zip_iterator.h> ...
[英]How to use thrust::transform on larger Vector derived from smaller Vector?
输入和启动 arrays: 预期 output: 对于 dv_A{} 中的每个元素,在 dv_B{} 中有 (dv_A.size - 1) 个元素。 这是因为 dv_A 的每个元素都应该在 dv_B 中为每个其他dv_A 元素有一个子元素(即应该排除自身)。 因此,如果 dv_A 中有 4 个元素 ...
[英]thrust device_vector resize compilation error, don't understand why it requires .cu code
假设我有一个 main.cpp 我得到上面的错误。 我明白这个错误想说什么,我应该使用 .cu 文件,使用 nvcc 编译器等......但是......为什么? 为什么调整大小需要kernel 调用。 没有理由推力矢量不能在这里使用驱动程序或运行时 api,那是什么? 不应该有与矢量的简单调整大小 ...
[英]Cuda lambda vs functor usage
我在 CUDA 中有一个简单的 function 使用函子 然而,这个等价的例子会崩溃(很好地符合 --extended-lambda flat)。 是否有另一种标志或不同的方式来表达它以使其运行。 函子很好,但 lambda 看起来更整洁。 错误是 ...
[英]How to prevent thrust::copy_if illegal memory access
在 CUDA C++ 代码中,我使用thrust::copy_if copy_if 将那些 integer 值从数组 x 复制到 y: 我将代码放在 try/catch 中,并定期更新数组 x,然后再次将非 -1 的数字推送到 y 的末尾,直到它访问数组外并返回 由于我不知道每次迭代中有多少值不是 ...
[英]thrust cuda, using tuple in lambda
我的代码编译和链接很好,但结果是错误的。 我不明白为什么 lambda function 没有改变 tupla 值。 这里是样本。 高级感谢 ...
[英]Thrust inplace copy_if operation
我想知道您是否可以将 copy_if 用作就地操作? IE void copy(thrust::device_vector<int> & input){ auto end = thrust::copy_if(input.begin(), input.end(), in ...
[英]How to get thrust::unique() to work with a vector of thrust::pair
我正在尝试使用推力::unique() 制作推力::pair<int, int> 的唯一推力设备向量,但结果输出似乎没有按应有的方式排序。 这是有问题的代码: 输出看起来像: 等等,还有八百万个条目。 文档说数组的第一个 N = num_unique_elements 应该是所有 ...
[英]How to fix Terra Rust Smart Contract OpenSSL Error
我在 Windows 11 上。当我在 cmd 或 powershell 中运行“cargo install cargo-generate --features vendored-openssl”时,我收到: error: failed to run custom build command for ...
[英]Thrust is very slow for array reduction
我正在尝试使用 thrust 将 1M 元素的数组减少为单个值。 我的代码如下: 问题是,仅thrust::reduce在我的 RTX 3070 笔记本电脑 GPU 上运行就需要大约 4 毫秒。这比我根据Mark Harris CUDA 参考中的 reduction#4 编写的代码慢得多,后者大约需 ...
[英]What is the canonical way to compare memory ranges in the CPU and in the GPU
我必须连续范围(指针 + 大小),一个在 GPU 中,一个在 CPU 中,我想比较它们是否相等。 比较这些范围是否相等的规范方法是什么? 提供非法的 memory 访问权限。 我也试过 ...
[英]Which one is faster? raw pointers vs thrust vectors
我是Cuda的初学者,我只是想问一个简单的问题,我找不到任何明确的答案。 我知道我们可以使用原始指针在设备 memory 中定义我们的数组: 而且,我们还可以使用 Thrust 来定义一个向量并 push_back 我们的项目: 实际上,我需要大量的 memory(比如 500M int 变量)来并 ...