gpt4 book ai didi

matlab - 在带有 GPU 加速的 arrayfun 中使用匿名函数 (Matlab)

转载 作者:行者123 更新时间:2023-12-02 06:41:41 24 4
gpt4 key购买 nike

我是 Matlab R2012b 并行工具箱的新手,想知道克服以下问题的最佳方法是什么。

我正在分析图像中每个像素的邻域。这是并行化的绝佳案例。但是,我似乎无法让它工作。

问题的主要问题是一些“常量”参数应该传递给函数。因此,应该为每个像素调用该函数,但是,它还需要访问周围的像素。 (最好将图像作为某种常量参数和要分析的像素的坐标传递)。

输出是每个像素一个值。

目前我有这个:

z2 = arrayfun(@(x) analyze(x, image, const1, ...), gpuArray(1:m*n));

其中 x 是虚拟变量,图像是包含图像亮度值的 2D 矩阵,const1(和其他)是函数常数(例如分析窗口的大小)。 m 和 n 是图像尺寸的大小。

但是,我收到此错误

Error using gpuArray/arrayfun Use of functional workspace is not supported.

有什么想法吗?

干杯,鲁本

最佳答案

不幸的是,R2012b 中的并行计算工具箱不支持此功能。 arrayfun 的 gpuArray 版本当前不支持将常量数据绑定(bind)到匿名函数句柄。 Arrayfun 参数必须直接传递,并且必须全部是标量或相同大小。

如果您可以绑定(bind)常量参数,您接下来会发现您当前无法对它们进行索引(或对它们执行任何非标量操作)。

也许您可以使用受支持的例程(例如 CONV2 或 FILTER2)来构建您的算法。

关于matlab - 在带有 GPU 加速的 arrayfun 中使用匿名函数 (Matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13236509/

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