问题标签 [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.
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
这些是我尝试过的目标的顺序。
不工作
- SSE41、AVX、AVX2
- SSE41、AVX2、AVX
- AVX2、SSE41、AVX
- AVX、SSE41、AVX2
作品
- AVX2、AVX、SSE41
- AVX、AVX2、SSE41
halide - 何时会支持带有向量类型的 compile_to_c?
什么时候compile_to_c
支持向量类型?
我Pipeline::compile_to_c()
在conv_layer.cpp :93 行添加了调用,以获取由卤化物生成的 C 代码。
构建conv_layer.cpp
并运行后,它会在CodeGen_C.cpp#212处导致断言错误:
编译为 C 时不能使用向量类型(还)
halide - 卤化物错误:“输入缓冲区 b0 在 -1 处访问,它在维度 0 中的 min(0) 之前”
我不明白为什么下面的卤化物代码会出现错误。请让我知道我的错误。
错误:输入缓冲区 b0 在 -1 处访问,在维度 0 中的最小值 (0) 之前
halide - 在没有 define_extern func 的情况下在 Halide 中实现 Canny 算法的滞后步骤的困难
- 问题是,当标记为弱边缘(在两个阈值之间)的像素变为强边缘(已接受,如此处所述)时,需要递归地将相同的逻辑应用于连接的邻居(跟踪边缘)。
- 在命令式语言中,当从弱边缘变为强边缘时,可以使用堆栈来存储位置 (x,y)。然后,最后,在堆栈不为空时处理邻居,根据需要更新堆栈。但是,如何在没有 define_extern 函数的纯卤化物中实现类似的东西?
我已将此代码用于滞后,但缺少动态递归和/或堆栈在需要时对邻居进行滞后,这是我找不到如何实现的:
怀疑,有没有办法通过递归、堆栈或其他任何东西,做这样的事情:
arm64 - 卤化物是否支持带有霓虹灯的 ARMv8(aarch64)?
我想将卤化物用于带有霓虹矢量化的 ARM A53(aarch64) 目标。
但我不知道如何创建目标对象。此外,我在 Target.h 中找不到具有霓虹灯功能的 aarch64目标。
我测试过的以下代码在 A53 目标上运行,但生成的代码不包含霓虹灯指令。
halide - 如何可视化卤化物时间表?
如何像这个视频一样可视化卤化物时间表?卤化物存储库中带有viz.sh的 HalideTraceViz 似乎可视化了这一点。但是 viz.sh 生成的camera_pipe.avi只显示大约 10 秒的黑色。这是使用 mplayer 播放 .avi 文件时的日志。
c++ - 无法在卤化物中加载灰度图像
当我尝试加载灰度图像 png 格式以执行此代码时出现错误。我的程序是卤化物教程第 2 课的一部分。这是我的代码:
这是错误消息:
错误:
对“i0”的 3 参数调用,它有 2 个维度。
中止(核心转储)
halide - 是否可以在 Halide 中使用外部库?
我想循环一个图像,对每个 8x8 补丁应用一个复杂的操作。举个例子,假设我需要计算每个补丁的奇异值分解(SVD)并将第三个奇异值存储在输出图像中。是否可以将库(例如 SVD 的 LAPACK)与 Halide 结合使用?还是应该将 SVD 算法编程为卤化物管道的一部分?
halide - 为什么我们不能基于循环变量状态进行专门化?
假设我们有以下内容:
如果能够强制 Halide 在循环体中为此使用 if/then/else 结构,而不是选择,那就太好了。我假设这是使用specialize() 调度命令完成的:
但是,这似乎是被禁止的:
存在这种限制是否有特殊原因?或者,除了展开之外,还有其他方法可以达到预期的行为?
谢谢和亲切的问候,
桑德
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 的符号