首页 > 其他分享 >SIMD笔记-ARM NEON

SIMD笔记-ARM NEON

时间:2023-11-30 19:55:22浏览次数:31  
标签:float16 NEON SIMD output f16 ARM size

参考资料

https://blog.csdn.net/fuhanga123/article/details/120673795

概述

对于处理半精度浮点数(float16)的加法,我们可以使用 ARM NEON 指令集,因为 Intel SIMD 指令集(SSE 和 AVX)不直接支持 float16 运算。

ARM NEON 指令集中有专门用于 float16 运算的指令。以下是一个使用 ARM NEON 指令集的 C 代码示例,展示了如何对两个 float16_t 类型的数组进行逐元素相加:


#include <stdio.h>
#include <arm_neon.h>

void add_float16_arrays(const float16_t *input1, const float16_t *input2, float16_t *output, size_t size) {
    for (size_t i = 0; i < size; i += 8) {
        // 加载输入向量
        float16x8_t vec1 = vld1q_f16(input1 + i);
        float16x8_t vec2 = vld1q_f16(input2 + i);

        // 对 float16_t 元素执行加法操作
        float16x8_t result = vaddq_f16(vec1, vec2);

        // 将结果存储到输出向量中
        vst1q_f16(output + i, result);
    }
}

int main() {
    float16_t input1[] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
    float16_t input2[] = {8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f};
    float16_t output[8];

    add_float16_arrays(input1, input2, output, 8);

    for (int i = 0; i < 8; ++i) {
        printf("%f ", output[i]);
    }

    return 0;
}

在这个示例中,我们定义了一个名为 add_float16_arrays 的函数,该函数接受两个 float16_t 类型的输入数组和一个 float16_t 类型的输出数组。我们使用 vld1q_f16 加载输入向量,然后使用 vaddq_f16 执行逐元素加法操作。最后,我们使用 vst1q_f16 将结果存储到输出数组中。

请注意,要编译和运行此示例,您需要在支持 ARM NEON 指令集的处理器上使用兼容的编译器,如 GCC 或 Clang。

标签:float16,NEON,SIMD,output,f16,ARM,size
From: https://www.cnblogs.com/gnivor/p/17868134.html

相关文章

  • 掌握HarmonyOS框架的ArkTs如何管理和共享状态数据
    本文分享自华为云社区《深入理解ArkTs中的AppStorage和LocalStorage》,作者:柠檬味拥抱。ARKTS(ArkTypeScript)是HarmonyOS应用框架的一部分,提供了一种灵活而强大的状态管理机制。在ARKTS中,AppStorage和LocalStorage是两个关键的概念,它们分别用于应用级和页面级的状态共享。通过深......
  • 软件测试/人工智能|Pycharm安装指南(小白版)
    简介由于Python语法简单容易入门,并且Python在办公自动化等领域的功能非常强大,所以现在越来越多非IT行业的人也开始学起了Python,要学习和使用一门编程语言,一个好用的IDE是必不可少的,而对于Python来说,最好的IDE无疑是Pycharm。本文就给大家介绍一下如何从零到一来安装Pycharm。下......
  • 软件测试/人工智能|PyCharm常用快捷键指南
    简介我们安装好pycharm之后,就要开始使用pycharm了,但是pycharm的操作太多,顶部菜单选项已经很多,每个顶部菜单的选项下又有很多个子操作,所以我们在写代码的时候,如果要进行什么操作的话,在顶部菜单操作,就会显得比较繁琐,经常要找两级甚至三级菜单,如果我们对pycharm的快捷键比较熟悉的......
  • Pycharm常见问题与解决方案
    PyCharm无法启动有时候我们在启动PyCharm时,会遇到无法启动的情况,这可能是由于PyCharm的配置文件损坏所致。解决方法如下:1.打开终端,输入以下命令:```rm-rf~/.PyCharm*2.重新启动PyCharm。问题二:PyCharm无法连接远程服务器有时候我们需要在远程服务器上进行Python开发,但是......
  • pycharm记录
    EUWT4EE9X2-eyJsaWNlbnNlSWQiOiJFVVdUNEVFOVgyIiwibGljZW5zZWVOYW1lIjoic2lnbnVwIHNjb290ZXIiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQU0kiLCJmYWxsYmFja0Rh......
  • 【HarmonyOS】Mac电脑打开DevEco Studio意外退出或双击图标没反应
    ​【关键字】Mac,DevEcoStudio  【问题背景】Mac电脑打开DevEcoStudio报意外退出,或者双击图标没反应​​ 【解决方案】删除Users/{USER_NAME}/Library/LaunchAgents/jetbrains.vmoptions.plist文件后重启Mac 【相关链接参考】https://developer.huawei.com/consu......
  • 【HarmonyOS】模拟器一直停留在开机页面,无法进入桌面
    ​【关键字】 模拟器,qemu-error.log,Nosounddriver 【问题背景】模拟器一直停留在开机页面,无法进入桌面​​ 【解决方案】qemu-error.log中有以下报错​检查立体声混音是否打开,或者重新安装以下音卡驱动​​......
  • 四、HarmonyOS 基础语法
    1.变量ets是ts语法发扩展1.1组件外部声明变量/***author:创客未来*copyright:com.ckFuture.hrb*///ets是ts语法的扩展//声明变量并赋值:初始化letpome:string='我是字符串'//声明变量,未赋值letage:numberage=18@Entry@ComponentstructInd......
  • Windows 11 version 22H2 中文版、英文版 (x64、ARM64) 下载 (released Nov 2023)
    Windows11version22H2中文版、英文版(x64、ARM64)下载(releasedNov2023)Windows11,version23H2,2023年10月31日发布(本月暂未更)请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindows11目前版......
  • HarmonyOS 开发入门(二)
    HarmonyOS开发入门(二)日常逼逼叨在HarmonyOS开发入门(一)中我们描述了HarmonyOS开发的语言ArKTs以及Ts简单的入门级语法操作,接下来我们进入第二部分HarmonyOS开发编辑器以及helloWorld项目创建,有任何说的不合理的地方,希望各位看官老爷批评指正......