天天看点

在国产飞腾处理器搭载的银河麒麟操作系统上部署NE10在国产飞腾处理器搭载的银河麒麟操作系统上部署NE10

在国产飞腾处理器搭载的银河麒麟操作系统上部署NE10

内容简介

“银河飞腾”高性能32位浮点数字信号处理器(YHFT-DSP/700)由国防科技大学计算机学院自主研制成功。

银河麒麟(Kylin)是由国防科技大学研制的开源服务器操作系统,他与优麒麟均可从优麒麟的官方网站下载,可以说,优麒麟就是中国版本的Ubuntu。语言和Ubuntu一样支持多语言的。更新与Ubuntu同步,但就银河麒麟来说,比优麒麟更具备较强的国产化,汉化的界面比优麒麟强上不少。此系统更具备适合替代windows适合国人使用。

Ne10是一个单独的开源库,可以把它直接嵌入到工程里面去(目前支持linux,android,ios),直接调用里面的函数。Ne10已实现一些接口,可分为4个模块:dsp、math、imgproc、physics。比如dsp中目前就已封装了fft,fir,irr算法函数接口,用户直接调用这些接口函数就可以实现相应算法。

原文连接:https://blog.csdn.net/q547569552/article/details/78018506

部署步骤

1.下载NE10

官网地址:http://projectne10.github.io/Ne10/

参考文档:http://projectne10.github.io/Ne10/doc/

2.编译NE10

2.1 解压安装包

2.2.进入解压目录

2.3.创建build文件

mkdir build 或者 touch build

2.4.进入build文件夹

cd build

2.5.export NE10_LINUX_TARGET_ARCH=aarch64(飞腾银河麒麟为arm64架构)

3.重点

1.由于aarch64是armv8架构,所以内核是支持neon的,但是Ne10中的(math模块的)neon源码没有针对aarch64做优化,所以直接使用上述编译步骤会报错,

目前比较实用一般有两种

  1. 针对arrch64架构修改neon源码部分编译符号
  2. 直接忽略neon优化模块的实现方式,采用c的实现
  1. 在CMakeLists.txt的88,90行可以看见math和physics模块没有针对aarch64优化
  2. 复制上述两行的数据到92行并注意代码格式
  3. 由于是aarch64所以还需注释掉51–54,190-192行的内容
  4. 修改完毕将上述文件复制到新建的build文件中,
  5. export NE10_LINUX_TARGET_ARCH=aarch64
  6. sudo cmake -DCMAKE_TOOLCHAIN_FILE= ./GNUlinux_config.cmake …(飞腾处理器自带了arm处理器)
  7. 修改Ne10源码中/modules/math/NE10_init_math.c 文件(注释掉34-125行的数据)
  8. 修改Ne10源码中/modules/math/CMake.txt 文件(注释掉170行的内容,并去掉43行的-mfpu=neon这个参数(aarch64架构下编译器自带该参数))
  9. sudo make
  10. 查看生成的libNE10.a包是不是308k,如果是则编译成功

4.编译使用的注意点

比如使用test.c调用了NE10 里边的库函数在编译的时候具体注意点有:

1.拷贝libNE10.a该静态包到系统预装的编译器根目录

2.编译生成可执行文件

gcc test.c -lNE10 -lm (lm为静态数学库math)

》》》》》》》》》Go…

继续阅读