我有一个任务要做。我需要在 CUDA 上运行 Flood Fill 算法。在 CPU 上,我有一个带有队列的非递归方法,但我不知道如何将此代码移动到 GPU 以使其运行得更快。有人可以帮忙吗?
编辑:这是我的 CPU 代码,只是普通的 FloodFill 和我的小修改
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));
}
}
}