如何在Android上使用ARM Float16内部功能?

请考虑以下计划:

#include <arm_neon.h>

int main(int, char** argv) {
    const float16x8_t a = vdupq_n_f16(1.0F);
    const float16x8_t b = vdupq_n_f16(- 1.0F);
    const float16x8_t c = vaddq_f16(a, b);
}

下面的cmake文件:

cmake_minimum_required(VERSION 3.15)
project(test CXX)
add_executable(test main.cpp)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -march=${MARCH}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -march=${MARCH}")
target_compile_options(test PRIVATE -Wall -Wextra -Wpedantic -g)
target_compile_features(test PRIVATE cxx_std_17)

使用以下命令实例化:

cmake -DCMAKE_ANDROID_API=26 -DANDROID_PLATTFORM="26"\                             
              -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
              -DCMAKE_ANDROID_NDK=/tmp/android-ndk-r25c  \
              -DCMAKE_ANDROID_STL_TYPE=c++_static -DCMAKE_ANDROID_ABI=arm64-v8a\
              -DCMAKE_BUILD_TYPE=Release -DMARCH=armv8.2-a -DCMAKE_SYSTEM_NAME=Android -S . -B build_android

在编译程序时,我得到以下错误:

/tmp/float16/main.cpp:6:27: error: use of undeclared identifier 'vaddq_f16'
    const float16x8_t c = vaddq_f16(a, b);
                          ^

我知道,那个16号彩车ABI notes028/0012/13--Advanced-SIMD--Neon--intrinsics" rel="nofollow noreferrer">Arm-v8.2元可以买到.此外,功能vaddq_f161arm_neon.h中的ifdef #if defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC)保护.在什么情况下,在为Android编译程序时,该标志设置为真?安卓ABI notes说 ARM 64-v8a仅指ARM-v8.0.有没有办法在Android上使用Float16的内部特性?

推荐答案

回答问题(并参考上述问题的 comments ):

Float16内部函数可以与选项-DMARCH=armv8.2-a+fp16一起使用.请参见GCC docs,其中列出了体系 struct 选项.

Android相关问答推荐

长流与长流的比较<>

房间DB:UPSERT返回什么?

RemoteActivityHelper.startRemoteActivity不适用于Android Wear OS 4模拟器

Android 14(Oneui 6)中的本地推送通知行为不一致

Android Gradle/Groovy,如何将文件复制到APK

Android系统应用程序启用编程以太网网络共享

Android 12+BLE字节不同

将输出写入已发布的 Android 应用程序中的日志(log)文件?

如何在我的sqlite数据库中获取某个玩家的分数

如何禁用自动登录 google play games services android unity?

Andorid Studio编译器如何自动为变量editText生成mutableStateOf("")的方法名?

Material 3 中的 ModalBottomSheet 用于 compose

Koin Android-KMM:我有嵌套范围但注入不起作用

Jetpack Compose Material3 禁用 ListItem

无法为:app@debug/compileClasspath解析依赖项com.github.dhaval2404:imagepicker-support:1.7.1

Jetpack Compose:mutableStateOf 不随流量更新

Delphi 11:以编程方式查找 MSBuild 的正确工具版本

如何使用 Kotlin 在 Android Wear(Galaxy watch 4)中继续在后台运行应用程序

Android:在模块 jetified-play-services-measurement 和 jetified-play-services-measurement-impl 中发现重复类

react-native android项目未找到错误