【问题标题】:Sort multiple independent vectors of double对双精度的多个独立向量进行排序
【发布时间】:2013-10-03 11:57:56
【问题描述】:

也许我有点不清楚:

我想做的是尽可能快地对许多向量进行排序。 例如,我有 200 个向量和 200 个双精度。

【问题讨论】:

  • 您是要对每个向量内部的元素进行排序,还是要对所有向量进行排序(这需要一个额外的类别,因为数字向量没有先天顺序)?

标签: c++ sorting parallel-processing gpu


【解决方案1】:

由于您尚未发布代码,我假设您正在寻找更好的代码优化以节省内存和时间。尝试在循环中使用标志。

for(i=1;x;i++)
{
    sort();
    if(flag)
       break;
}

“break”确保您在对数据进行排序后不会迭代不必要的代码,该标志告诉编译器在迭代完成时退出循环语句。在嵌套循环中使用标志更为重要,因为空间复杂度超过 O(n.square) 并且它调用了更高的效率。

这在大量迭代和内存空间中节省了大量时间。尽可能尝试优化您的代码,从长远来看会有很大的不同。

【讨论】:

  • 我没有任何标志。我永远不会打破。我想对多个并行的向量进行快速排序
  • 尝试基数排序,否则如果你使用单循环,快速排序就足够了。
【解决方案2】:

使用基数排序可以加快排序速度。

在 Nvidia cuda/openCL SDK 中有一个基数排序算法的并行实现。

【讨论】:

  • 也许我有点不清楚,我想对很多向量进行排序。不只是一个大。
猜你喜欢
  • 2016-11-22
  • 1970-01-01
  • 2011-05-30
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多