gpt4 book ai didi

c++ - 为 ARM Cortex A9 生成 AOT Halide 目标文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:44 25 4
gpt4 key购买 nike

我正在尝试使用 Halide-lang AOT 和交叉编译教程。我想做的是为 Cortex A9 嵌入式 Linux 目标交叉 AOT 编译 Halide 程序。

我修改了 Lesson_11_cross_compilation.cpp,进行了以下更改:

Target target;
target.os = Target::Linux; // The operating system
target.arch = Target::ARM; // The CPU architecture
target.bits = 32; // The bit-width of the architecture
std::vector<Target::Feature> arm_features; // A list of features to set
arm_features.push_back(Target::ARMv7s);
target.set_features(arm_features);
brighter.compile_to_file("lesson_11_arm_32_linux", args, target); // Pass the target as the last argument.
brighter.compile_to_c("lession_11.c", args, "foo", target);

我使用 Lesson_11_cross_compilation.cpp 文件顶部列出的 g++ 命令对其进行编译。这会生成 lession_11 可执行文件。我运行可执行文件,并得到一个 Lesson_11_arm_32_linux.h/o 文件。

然后,我在该文件上运行交叉编译器,尝试使用以下命令行为我的目标生成程序:

/opt/Xilinx/SDK/2014.2/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-g++ -o test -std=c++11 -lpthread Lesson_10_aot_compilation_run.cpp Lesson_11_arm_32_linux.o -mfpu=neon-vfpv4/opt/Xilinx/SDK/2014.2/gnu/arm/lin/bin/../lib/gcc/arm-xilinx-linux-gnueabi/4.8.1/../../../../arm-xilinx-linux-gnueabi/bin/ld: 错误:lesson_11_arm_32_linux.o 使用 VFP 寄存器参数,测试不/opt/Xilinx/SDK/2014.2/gnu/arm/lin/bin/../lib/gcc/arm-xilinx-linux-gnueabi/4.8.1/../../../../arm-xilinx-linux-gnueabi/bin/ld:无法合并文件 Lesson_11_arm_32_linux.o 的目标特定数据collect2:错误:ld 返回 1 退出状态

Halide 似乎生成了使用 VFP 的代码。我尝试更改 -mfpu 选项和 -mfloat-abi=softfp、软和硬。什么都不起作用。有没有办法配置 Halide 来生成某种类型的 FPU 指令?

最佳答案

我认为您不希望 cortex-a9 使用 armv7。对于 32 位 Arm Halide,假定使用 cortex-a9,除非您启用了 armv7s。

如果您有一个可以使用的“gnueabihf”工具链,那么它应该可以工作(硬 float )。如果您愿意自己编译 Halide,您还可以修改 CodeGen_ARM::use_soft_float_abi() ( https://github.com/halide/Halide/blob/master/src/CodeGen_ARM.cpp#L1252 ) 来执行您想要的操作。

我们或许应该添加一个选择 float abi 的目标标志。

关于c++ - 为 ARM Cortex A9 生成 AOT Halide 目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32333104/

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