小编Phi*_*ber的帖子

用Cuda排序算法.内核内部还是外部?

我有一个大小为50000x100的矩阵,我需要在C++中使用Cuda对每一行进行排序.我的架构是K80 NVidia卡.

由于列数很少,我目前正在内核中运行排序算法.我正在使用在矩阵的所有行上运行的修改后的气泡算法.

我想知道是否有更有效的方法继续进行.我试图在我的内核中使用thrust :: sort但速度要慢得多.我也尝试了合并排序算法,但算法的递归部分在我的内核中不起作用.

== ==编辑

这是我的内核:

__global__ void computeQuantilesKernel(float *matIn, int nRows, int nCols, int nQuantiles, float *outsideValues, float *quantilesAve, int param2)
{
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    float values[100];//big enough for 100 columns
    int keys[100];
    int nQuant[100];//big enough for 100 quantiles (percentiles)
    float thisQuantile[100];
    int quant;

    if (idx >= nRows) return;

    //read matIn from global memory
    for (int i = 0; i < nCols; i++)
    {
        values[i] = matIn[idx * nCols + i …
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm cuda

5
推荐指数
1
解决办法
787
查看次数

如何在 VS2019 CUDA 项目中启用 C++17 代码生成

我正在将一些代码从一台电脑上的 VS2017 移动到另一台装有 VS2019 的电脑。一切都很好,除了我不能使用 std::filesystem 。在我以前的代码中,我使用 C++14 并拥有 std::experimental::filesystem。在新代码中,我想迁移到 C++17,因此我更改为 std::filesystem (如下面的代码所示)。奇怪的是,智能感知(不确定它是正确的名称)没有显示错误。当我输入 std::f 时它甚至会显示文件系统...

在此输入图像描述

但代码不会构建并给出错误“命名空间“std”没有成员“文件系统””。

我将C++语言标准更改为c++latest,VS2019版本是Community 16.6.5。

#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;

int main()
{
    std::string path = "C:\\";
    for (const auto& entry : fs::directory_iterator(path))
        std::cout << entry.path() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我最初的问题的最后一行可能不够清楚:我已经将“C++ 语言标准”更改为 C++17 或 C++latest。

编辑:根据要求,输出: 在此输入图像描述

感谢@drescherjm,我们发现这是一个 Cuda 问题。Cuda 专家有什么想法吗?

c++ cuda visual-studio-2019

3
推荐指数
1
解决办法
2605
查看次数

标签 统计

c++ ×2

cuda ×2

algorithm ×1

sorting ×1

visual-studio-2019 ×1