首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何由两个数组组成对向量,然后使用CUDA/Thrust对对的第一个元素进行排序?

如何由两个数组组成对向量,然后使用CUDA/Thrust对对的第一个元素进行排序?
EN

Stack Overflow用户
提问于 2011-08-12 14:59:53
回答 1查看 1.1K关注 0票数 4

好吧,这会是一大口。

我有一个指向序列化2D数组的指针,除了指针算法之外,我想从(本质上)两个数组(我计划从2D数组中提取的)中生成一个成对的向量。然而,我需要使用推力库。

--这是为了使我能够根据对的第一个元素的值,在向量上使用推力::sort()。在设备上.

因此,我需要一个向量(最好是thrust::device_vector),它的大小与arrayOne和arrayTwo的大小相匹配,其中第一个元素来自arrayOne,第二个元素来自arrayTwo。这样,我就可以使用pair::sort ()来按照对的第一个元素进行排序。

不好意思,因为缺少代码,但我仍在试图找出如何实现这一点的更详细的细节,因此出现了一个问题。我会在路上贴出我的尝试。提前谢谢你!

#更新

我觉得我真的很幸运,并且找到了解决方案,因为我贴出了这个问题(这是一个比使用对更好的解决方案-它是从我之前提出的一个问题中向我建议的),原来推力实际上提供了我默认要寻找的东西:

代码语言:javascript
运行
复制
#include <thrust/sort.h>
  ...
  const int N = 6;
  int    keys[N] = {  1,   4,   2,   8,   5,   7};
  char values[N] = {'a', 'b', 'c', 'd', 'e', 'f'};
  thrust::sort_by_key(keys, keys + N, values);
  // keys is now   {  1,   2,   4,   5,   7,   8}
  // values is now {'a', 'c', 'b', 'e', 'f', 'd'}

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

所以,现在我要做的就是从两个数组中得到两个thrust::device_vectors (我必须从2D数组中提取)。高兴的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-03 09:05:42

原始海报找到了一个使用thrust::sort_by_key的解决方案,如下所示:

代码语言:javascript
运行
复制
#include <thrust/sort.h>
  ...
  const int N = 6;
  int    keys[N] = {  1,   4,   2,   8,   5,   7};
  char values[N] = {'a', 'b', 'c', 'd', 'e', 'f'};
  thrust::sort_by_key(keys, keys + N, values);
  // keys is now   {  1,   2,   4,   5,   7,   8}
  // values is now {'a', 'c', 'b', 'e', 'f', 'd'}

是从http://code.google.com/p/thrust/wiki/QuickStartGuide#Fancy_Iterators拿来的

问题中的应用程序将需要创建一对输入迭代器,从问题中提到的原始音调数组中提供键和值向量。

这个答案被添加为一个社区wiki答案,以将这个问题从未回答的列表中删除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7042014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档