Cuda 库达填海

Cuda 库达填海,cuda,Cuda,我有任务要做。我需要在CUDA上运行洪水填充算法。在CPU上,我有一个带有队列的非递归方法,但我不知道如何将此代码移动到GPU以便它运行得更快。有人能帮忙吗 编辑: 这是我的CPU代码,只是正常的泛洪填充和我的小修改 void cpuFloodFill(std::vector<std::vector<int>> *colorVector, int node) { std::queue<int> q; q.push(node); int

我有任务要做。我需要在CUDA上运行洪水填充算法。在CPU上,我有一个带有队列的非递归方法,但我不知道如何将此代码移动到GPU以便它运行得更快。有人能帮忙吗

编辑: 这是我的CPU代码,只是正常的泛洪填充和我的小修改

void cpuFloodFill(std::vector<std::vector<int>> *colorVector, int node)
{
    std::queue<int> q;
    q.push(node);

    int i,j;

    while(!q.empty())
    {
        int k = q.front();
        q.pop();

        k2ij(k, &i, &j);
        if((*colorVector)[i][j] == COLOR_TARGET)
        {
            (*colorVector)[i][j] = COLOR_REPLACEMENT;           
            if(i - 1 >= 0 && i - 1 < X && j >= 0 && j < Y)
                q.push(ij2k(i - 1, j));

            if(i + 1 >= 0 && i + 1 < X && j >= 0 && j < Y)
                q.push(ij2k(i + 1, j));

            if(i >= 0 && i < X && j - 1 >= 0 && j - 1 < Y)
                q.push(ij2k(i, j - 1));

            if(i >= 0 && i < X && j + 1 >= 0 && j + 1 < Y)
                q.push(ij2k(i, j + 1));
        }

    }
}
void cpuFloodFill(std::vector*colorVector,int节点)
{
std::队列q;
q、 推送(节点);
int i,j;
而(!q.empty())
{
int k=q.front();
q、 pop();
k2ij(k、i、j);
如果((*colorVector)[i][j]==COLOR\u目标)
{
(*颜色向量)[i][j]=颜色替换;
如果(i-1>=0&&i-1=0&&j=0&&i+1=0&&j=0&&i=0&&j-1=0&&i=0&&j+1
名为的图像骨架化工具包中有一个GPU泛洪填充实现。其源代码的链接在网站上。请注意代码的许可证:源代码和工具包对于研究目的是免费的,并有适当的引用。

在名为的图像骨架化工具包中有一个GPU泛洪填充实现。其源代码的链接在网站上。请注意代码的许可证:源代码和工具包对于研究目的是免费的,并有适当的引用。

您能给出您的CPU代码吗?在没有任何信息的情况下帮助你真的很难。你能给出你的CPU代码吗?没有信息,真的很难帮助你