问题标签 [halide]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
232 浏览

halide - 多目标静态库 - 崩溃

我在代码生成之前尝试了多目标功能 - 静态库选项。我写了一个生成器,并且能够为多个目标功能生成静态库和头文件,target=x86-64-windows-sse41,x86-64-windows-avx,x86-64-windows-avx2 但是在链接到我的应用程序后,应用程序崩溃了。当我指定只有target=x86-64-windows-sse41应用程序运行良好。是的,我的系统支持 SSE4.1。

我的理解是,在为多个目标编译时,Halide 会在运行时检查功能支持并调用适当的规范。

我做了一个dumpbin /All mylib.lib /out:mylib.txt并找到了 sse41、avx 和 avx2 的符号。它也有External | halide_can_use_target_features

看起来我错过了一些步骤。有关如何使用此功能的任何指示?

谢谢


更新

这是我的处理器支持的内容 - 从Coreinfo实用程序中提取

Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz Intel64 Family 6 Model 37 Stepping 1, GenuineIntel Microcode signature: 00000428 FPU * Implements i387 floating point instructions MMX * Supports MMX instruction set MMXEXT - Implements AMD MMX extensions 3DNOW - Supports 3DNow! instructions 3DNOWEXT - Supports 3DNow! extension instructions SSE * Supports Streaming SIMD Extensions SSE2 * Supports Streaming SIMD Extensions 2 SSE3 * Supports Streaming SIMD Extensions 3 SSSE3 * Supports Supplemental SIMD Extensions 3 SSE4a - Supports Streaming SIMDR Extensions 4a SSE4.1 * Supports Streaming SIMD Extensions 4.1 SSE4.2 * Supports Streaming SIMD Extensions 4.2 AES * Supports AES extensions AVX - Supports AVX intruction extensions FMA - Supports FMA extensions using YMM state MSR * Implements RDMSR/WRMSR instructions MTRR * Supports Memory Type Range Registers XSAVE - Supports XSAVE/XRSTOR instructions OSXSAVE - Supports XSETBV/XGETBV instructions RDRAND - Supports RDRAND instruction RDSEED - Supports RDSEED instruction

这些是我尝试过的目标的顺序。

  1. 不工作

    • SSE41、AVX、AVX2
    • SSE41、AVX2、AVX
    • AVX2、SSE41、AVX
    • AVX、SSE41、AVX2
  2. 作品

    • AVX2、AVX、SSE41
    • AVX、AVX2、SSE41
0 投票
1 回答
225 浏览

halide - 何时会支持带有向量类型的 compile_to_c?

什么时候compile_to_c支持向量类型?

Pipeline::compile_to_c()conv_layer.cpp :93 行添加了调用,以获取由卤化物生成的 C 代码。

构建conv_layer.cpp并运行后,它会在CodeGen_C.cpp#212处导致断言错误:

编译为 C 时不能使用向量类型(还)

0 投票
1 回答
385 浏览

halide - 卤化物错误:“输入缓冲区 b0 在 -1 处访问,它在维度 0 中的 min(0) 之前”

我不明白为什么下面的卤化物代码会出现错误。请让我知道我的错误。

错误:输入缓冲区 b0 在 -1 处访问,在维度 0 中的最小值 (0) 之前

0 投票
1 回答
494 浏览

halide - 在没有 define_extern func 的情况下在 Halide 中实现 Canny 算法的滞后步骤的困难

  • 问题是,当标记为弱边缘(在两个阈值之间)的像素变为强边缘(已接受,如此处所述时,需要递归地将相同的逻辑应用于连接的邻居(跟踪边缘)。
  • 在命令式语言中,当从弱边缘变为强边缘时,可以使用堆栈来存储位置 (x,y)。然后,最后,在堆栈不为空时处理邻居,根据需要更新堆栈。但是,如何在没有 define_extern 函数的纯卤化物中实现类似的东西?

我已将此代码用于滞后,但缺少动态递归和/或堆栈在需要时对邻居进行滞后,这是我找不到如何实现的:

怀疑,有没有办法通过递归、堆栈或其他任何东西,做这样的事情:

0 投票
1 回答
709 浏览

arm64 - 卤化物是否支持带有霓虹灯的 ARMv8(aarch64)?

我想将卤化物用于带有霓虹矢量化的 ARM A53(aarch64) 目标。

但我不知道如何创建目标对象。此外,我在 Target.h 中找不到具有霓虹灯功能的 aarch64目标

我测试过的以下代码在 A53 目标上运行,但生成的代码不包含霓虹灯指令。

0 投票
1 回答
592 浏览

halide - 如何可视化卤化物时间表?

如何像这个视频一样可视化卤化物时间表?卤化物存储库中带有viz.sh的 HalideTraceViz 似乎可视化了这一点。但是 viz.sh 生成的camera_pipe.avi只显示大约 10 秒的黑色。这是使用 mplayer 播放 .avi 文件时的日志。

0 投票
1 回答
286 浏览

c++ - 无法在卤化物中加载灰度图像

当我尝试加载灰度图像 png 格式以执行此代码时出现错误。我的程序是卤化物教程第 2 课的一部分。这是我的代码:

这是错误消息:

错误:

对“i0”的 3 参数调用,它有 2 个维度。

中止(核心转储)

0 投票
1 回答
360 浏览

halide - 是否可以在 Halide 中使用外部库?

我想循环一个图像,对每个 8x8 补丁应用一个复杂的操作。举个例子,假设我需要计算每个补丁的奇异值分解(SVD)并将第三个奇异值存储在输出图像中。是否可以将库(例如 SVD 的 LAPACK)与 Halide 结合使用?还是应该将 SVD 算法编程为卤化物管道的一部分?

0 投票
2 回答
216 浏览

halide - 为什么我们不能基于循环变量状态进行专门化?

假设我们有以下内容:

如果能够强制 Halide 在循环体中为此使用 if/then/else 结构,而不是选择,那就太好了。我假设这是使用specialize() 调度命令完成的:

但是,这似乎是被禁止的:

存在这种限制是否有特殊原因?或者,除了展开之外,还有其他方法可以达到预期的行为?

谢谢和亲切的问候,

桑德

0 投票
1 回答
203 浏览

halide - 具有边界条件的卤化物链接器错误

我在尝试在卤化物代码中调用边界条件时遇到了问题。我正在使用来自该站点的二进制构建 halide-mac-64-trunk...。我在调用其他卤化物函数时没有其他问题。

图像输入 = load_image(argv[1]);

bounded_luma = Halide::BoundaryConditions::repeat_edge(input);

架构 x86_64 的未定义符号:“Halide::BoundaryConditions::repeat_edge(Halide::Func const&, std::__1::vector, std::__1::allocator > > const&)”,引用自:Halide::Func Halide ::BoundaryConditions::repeat_edge, int, int, int, int>(Halide::Buffer, int, int, int, int) in main.o ld:未找到架构 x86_64 的符号