reduction相关内容

双倍和减法OpenCL教程

我完全是OpenCL的新手。 我需要对一维双精度数组进行减法运算(求和运算符)。 我一直在网上转来转去,但我找到的例子很让人困惑。 任何人都可以发布易于阅读(并且可能高效)的教程实现吗? 其他信息: -我可以访问一台GPU设备; -我使用C编写内核代码 推荐答案 您提到您的问题涉及60k Double,无法放入设备的本地内存。我组装了一个内核,它可以将您的向量降低到1 ..
发布时间:2022-02-23 14:51:44 其他开发

使用 Fortran 减少 Openmp 数组

我正在尝试并行化我编写的代码.我在对数组执行缩减时遇到问题.对于小型数组,这一切似乎都可以正常工作,但是当数组大小超过某个点时,我要么得到堆栈溢出错误,要么崩溃. 我尝试在编译时使用/F 增加堆栈大小,我在 Windows 上使用 ifort,我还尝试将 set KMP_STACKSIZE=xxx 传递给英特尔特定的堆栈大小减免.这有时会有所帮助并允许代码在我的循环中进一步前进,但最终并不能 ..
发布时间:2022-01-14 10:17:05 其他开发

如何通过减少找到CUDA中的数组总和

我正在实现一个函数来使用归约来查找数组的总和,我的数组有 32*32 个元素,它的值是 0 ... 1023.我的预期总和值为 523776,但我的结果是 15872,这是错误的.这是我的代码: #include #include #定义 w 32#定义 h 32#define N w*h__global__ void reduce(int *g_idata, ..
发布时间:2022-01-10 16:03:44 其他开发

CUDA 中的块减少

我正在尝试减少 CUDA,我真的是一个新手.我目前正在研究来自 NVIDIA 的示例代码. 我想我真的不知道如何设置块大小和网格大小,尤其是当我的输入数组(512 X 512)大于单个块大小时. 这里是代码. 模板__global__ void reduce6(int *g_idata, int *g_odata, unsigned i ..
发布时间:2022-01-10 15:51:53 其他开发

CUDA:在扭曲减少和 volatile 关键字中

阅读以下问题及其答案后 链接 我的脑海里还有一个问题.来自我的 C/C++ 背景;我知道使用 volatile 有它的缺点.并且在答案中还指出,在 CUDA 的情况下,如果不使用 volatile 关键字,优化可以用寄存器替换共享数组以保存数据. 我想知道在计算(总和)减少时会遇到哪些性能问题.例如 __device__ void sum(volatile int *s_data, ..
发布时间:2022-01-10 15:42:55 C/C++开发

如何使用 cuda 沿行方向对巨大的 2D 矩阵执行缩减?(每行的最大值和最大值的索引)

我正在尝试沿二维矩阵的行方向进行缩减.我从在 stackoverflow 上找到的代码开始(非常感谢 Robert!) thrust::max_element 比较慢cublasIsamax - 更高效的实施? 上面的链接显示了一个在单行上执行归约的自定义内核.它将输入行分成许多行,每行有 1024 个线程.效果很好. 对于 2D 情况,除了现在有一个 y 网格维度之外,一切都相 ..
发布时间:2022-01-10 15:32:14 其他开发

CUDA:如何在 GPU 中将数组的所有元素加总为一个数字?

首先,让我声明我完全知道我的问题已经被问到:BlockCUDA 的减少 但是,正如我希望澄清的那样,我的问题是对此的跟进,我有特殊的需求,使得该 OP 找到的解决方案不合适. 那么,让我解释一下.在我当前的代码中,我在 while 循环的每次迭代中运行一个 Cuda 内核,以对数组的值进行一些计算.举个例子,可以这样想: int max_iterations = 1000;整数迭代 = 0 ..
发布时间:2022-01-09 16:33:21 其他开发

浮点向量的 SSE 缩减

如何使用 sse 内在函数获取浮点向量的总和元素(减少)? 简单的序列号: void(float *input, float &result, unsigned int NumElems){结果 = 0;for(auto i=0; i 解决方案 通常在循环中生成 4 个部分和,然后在循环后对 4 个元素进行水平求和,例如 #include #include ..
发布时间:2022-01-09 15:44:07 C/C++开发

如何在 Magento 中创建特定产品的优惠券?

假设我有 10% 的优惠券代码. 此优惠券仅适用于产品 B 顾客的购物车里有: 产品 P1 产品 B 产品 P2 我不希望我的 10% 优惠券适用于其他产品,而仅适用于产品 B. 你知道我如何在 Magento 中做到这一点吗? 解决方案 以下是为任何特定产品创建优惠券代码的过程:- 登录到管理员 转到促销 -> 购物车价格规则 点击添加新规则 填 ..
发布时间:2021-12-19 08:54:30 PHP

减少 OpenMP 中的数组

我正在尝试并行化以下程序,但不知道如何减少数组.我知道这是不可能的,但有没有其他选择?谢谢.(我在 m 上添加了reduce,这是错误的,但想就如何做到这一点提出建议.) #include #include #include #include 使用命名空间标准;int主(){int A [] = {84, 30, 95, 94, 36, 73, 52, 23, 2, 13};整数 S [10]; ..
发布时间:2021-12-06 11:26:15 C/C++开发

是否可以使用 openmp 减少数组?

OpenMP 本身是否支持减少表示数组的变量? 这会像下面这样工作...... float* a = (float*) calloc(4*sizeof(float));omp_set_num_threads(13);#pragma omp 并行缩减(+:a)for(i=0;i 理想情况下,omp 并行会有类似的东西,如果您有足够多的线程使其有意义,那么累积将通过二叉树发生. 解决方 ..
发布时间:2021-11-18 05:07:07 C/C++开发

用于并行求和的 Vulkan 计算着色器

我想实现这个算法https://dournac.org/info/gpu_sum_reduction在 Vulkan 的计算着色器中.在 OpenCL 中,这很容易,因为我可以明确声明哪些缓冲区是 __local,哪些是 __global.不幸的是,我似乎无法找到Vulkan 中的任何此类机制.请有经验的人给我举个例子,如何让这些东西在 Vulkan 中工作? 解决方案 Vulkan 中的 ..
发布时间:2021-09-20 20:32:34 其他开发

容器元素上的 OpenMP 减少

我有一个嵌套循环,外部迭代很少,内部迭代很多.在内部循环中,我需要计算一个总和,因此我想使用 OpenMP 缩减.外循环在一个容器上,因此减少应该发生在该容器的一个元素上.这是一个最小的人为示例: #include #include #include int main(){constexpr int n { 128 };std::vectorvec (4, 0);for (unsigned in ..
发布时间:2021-06-12 20:20:00 C/C++开发

使用 OpenMP 进行的阵列缩减导致“未找到用户定义的缩减"

我正在做一项学术工作,我必须从图像中获取直方图. 一切顺利,但是当我尝试使代码与 OpenMP 并行时,编译器返回此错误:找不到用于 'histog' 的用户定义的减少 我使用的代码是这样的: void HistogramaParaleloRed(int *histog){#pragma omp 并行{#pragma omp forfor (int i = 0; i ..
发布时间:2021-06-04 20:05:03 其他开发