首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >If语句等价于Halide

If语句等价于Halide
EN

Stack Overflow用户
提问于 2019-11-11 21:27:02
回答 1查看 633关注 0票数 1

需要帮助在卤化物中实现如果等效的话

代码语言:javascript
复制
if (current_pixel_mag > threshold) {
  mag = 65535;
  ed = 0;
}

我试过Halide,但这相当于C中的三值运算符,并且不支持给定条件下的多个语句。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-12 08:06:04

如果我说得对,下面的代码应该可以完成这项工作:

代码语言:javascript
复制
Var x, y;

Func mag = ...;
Func ed = ...;

Expr threshold = ...;

mag(x, y) = select(mag(x, y) > threshold, 65535, mag(x, y));
ed(x, y) = select(mag(x, y) > threshold, 0, ed(x, y));

由于更新定义,它效率很低,很难在x, y上的单个循环中调度两个函数。

也就是说,您可以在一个函数中存储多个语句,然后可以使用元组。元组有另一个select函数,称为tuple_select

代码语言:javascript
复制
Func magAndEd;
magAndEd(x, y) = {mag(x, y), ed(x, y)};
magAndEd(x, y) = tuple_select(magAndEd(x, y)[0] > threshold, {65535, 0}, magAndEd(x, y));

此外,可能还可以将阈值化简化为magAndEd的初始定义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58808916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档