gpt4 book ai didi

cuda - CUDA 中的广义霍夫变换 - 如何加快分箱过程?

转载 作者:行者123 更新时间:2023-12-01 04:42:25 24 4
gpt4 key购买 nike

正如标题所说,我正在对并行计算机视觉技术进行一些个人研究。使用 CUDA,我正在尝试实现 Hough 变换的 GPGPU 版本。我遇到的唯一问题是在投票过程中。我正在调用 atomicAdd() 来防止多个同时写入操作,而且我似乎没有获得太多的性能效率。我在网上搜索过,但没有找到任何方法来显着提高投票过程的性能。

您可以在投票过程中提供的任何帮助将不胜感激。

最佳答案

我不熟悉霍夫变换,所以在这里发布一些伪代码可能会有所帮助。但是如果您对投票感兴趣,您可以考虑使用 CUDA 投票内在指令来加速这一过程。

请注意,这需要 2.0 或更高版本的计算能力(Fermi 或更高版本)。

如果您想计算特定条件为真的块中的线程数,您可以使用 __syncthreads_count() .

bool condition = ...; // compute the condition
int blockCount = __syncthreads_count(condition); // must be in non-divergent code

如果您要计算条件为真的网格中的线程数,则可以执行 atomicAdd
bool condition = ...; // compute the condition
int blockCount = __syncthreads_count(condition); // must be in non-divergent code
atomicAdd(totalCount, blockCount);

如果您需要计算一个组中的线程数小于条件为真的块,您可以使用 __ballot()__popc() (人口数)。
// get the count of threads within each warp for which the condition is true
bool condition = ...; // compute the condition in each thread
int warpCount = __popc(__ballot()); // see the CUDA programming guide for details

希望这可以帮助。

关于cuda - CUDA 中的广义霍夫变换 - 如何加快分箱过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com