cuda二维数据极值点计算,每次结果都不相同

Innerlary Innerlary 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

下面是我的代码,每一次得到的结果都不相同,请大神帮我看看~
__global__ void cuda_findExtrema(float* input, float* extremaX, float* extremaY, float* maxValues, float* extremiX, float* extremiY, float* minValues, int* numMax, int* numMin, int nz, int nx)
{ int i1 = threadIdx.x + blockIdx.x * blockDim.x; // 行索引
int i2 = threadIdx.y + blockIdx.y * blockDim.y; // 列索引
if (i1 > 0 && i1 < nz - 1 && i2 > 0 && i2 < nx - 1)
{ float center = input[i1 * nx + i2]; // 8邻域点
float up = input[(i1 - 1) * nx + i2];
float down = input[(i1 + 1) * nx + i2];
float left = input[i1 * nx + (i2 - 1)];
float right = input[i1 * nx + (i2 + 1)];
float upLeft = input[(i1 - 1) * nx + (i2 - 1)];
float upRight = input[(i1 - 1) * nx + (i2 + 1)];
float downLeft = input[(i1 + 1) * nx + (i2 - 1)];
float downRight = input[(i1 + 1) * nx + (i2 + 1)]; // 极大值点 - 与八个邻域点比较
if (center > up && center > down && center > left && center > right && center > upLeft && center > upRight && center > downLeft && center > downRight)
{ int idx = atomicAdd(numMax, 1);
extremaX[idx] = i2; extremaY[idx] = i1;
maxValues[idx] = center; } // 极小值点 - 与八个邻域点比较
else if (center < up && center < down && center < left && center < right && center < upLeft && center < upRight && center < downLeft && center < downRight)
{ int idx = atomicAdd(numMin, 1);
extremiX[idx] = i2; extremiY[idx] = i1; minValues[idx] = center; } } }

...全文

相关推荐

使用二维网格和二维块对矩阵求和_cuda矩阵求和_cuda_矩阵求和_cuda并行_

在CUDA编程中,矩阵求和是一个常见的操作,特别是在高性能计算和大数据分析领域。

弓弢

基于GPU加速的SIFT特征提取——SiftGPU-V340完整实现

简介:《GPU加速实现SIFT算法详解》深入探讨了尺度不变特征变换(SIFT)在计算机视觉中的关键作用及其计算瓶颈。为提升传统SIFT算法在高分辨率图像处理中的效率,SiftGPU-V340通过利用GPU的并行计算能力,实现了对SIFT特征检测与描述的高效加速。该项目包含完整的源代码、库文件与编译脚本,基于CUDA架构和C++开发,支持OpenCV集成,适用于图像匹配、物体识别等高性能需求场景。经过优化的内存管理与并行策略确保了速度与精度的平衡,是计算机视觉领域中GPU加速算法应用的重要实践范例。

抹韵

21、求解凸包问题的简单分治算法

本文介绍了一种基于分治策略的简单凸包求解算法,结合MergeSort排序与Graham扫描技术,实现平面点集凸包的高效构造。文章详细阐述了算法原理、执行步骤及时间复杂度分析,其顺序执行时间复杂度为O(n log n)。同时探讨了k子问题划分在并行计算模型中的优化潜力,并回顾了凸包问题在图像处理和计算几何中的应用现状。最后提出了算法局限性及未来在并行化、新应用场景等方面的改进方向。

字节杂耍者

pytorch实现保证每次运行使用的随机数都相同

这涉及到在每次运行相同代码时都得到相同结果的能力,这对于验证研究结果、调试模型以及比较不同实验配置的效果至关重要。PyTorch是一个灵活的深度

weixin_38609128

cuda实现的中值滤波介绍

中值滤波的具体原理是选取一个含有奇数个像素点的掩模窗口,在图像数据中滑动,每次移动窗口时,取出窗口内所有像素点的灰度值,并将这些值进行排序,最终取排序后的中间值作为窗口中心像素的新值。

luoriyangliu
评论
收藏 已收藏
分享
返回顶部
Innerlary
高性能计算 2,409 成员 1,025 内容