我目前尝试对常见的密码学原语使用RVV 0.71进行指令集优化,并在D1-H开发板上测试其性能。然而目前遇到了一些问题:
1.我先后分别使用了全志官方提供的2021版本编译器、平头哥提供的C906 2.6.1版本编译器,以及准备使用的全志官方提供的2020版本编译器。然而,21版本和2.6.1版本启动V扩展并指定为C906后,编译通过的代码在D1-H上运行会出现非法指令的错误。请问如果我想编写能在D1-H开发板上运行的包含V扩展指令的程序,是不是只能使用2020版本的编译器?
2.我在玄铁上获取了RVV 0.71的接口函数说明,基于该文档整理了RVV的相关指令集和接口函数。显然,基于该文档开发的代码可以通过玄铁2.6.1的编译器编译,但使用全志21版编译器编译时会报错。请问全志官方是否为D1-H开发了专门的V扩展指令集和接口函数?且21版和20版对指令集和接口函数的定义也不相同?全志官方有提供D1-H RVV指令集开发的说明文档或接口函数的说明文档吗?我是否只能基于编译器的riscv-vector.h文件进行RVV的相关开发?
zoone 发布的最佳帖子
-
D1-H RVV指令集优化相关问题发布在 MR Series
-
回复: 尝试使用D1-H开发板集成区块链轻节点发布在 MR Series
首先是如何获取D1-H最新版编译器。
获取SDK的步骤如下:
前面的步骤参考官方步骤,进行到repo init时会出现如下错误
repo init -u https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git -b master -m tina-d1-h.xml
fatal: cannot obtain manifest https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.gitRepo command failed: UpdateManifestError
Unable to sync manifest tina-d1-h.xml
原因是通过该命令无法输入账号密码。输入如下代码以输入账号密码进行鉴权:
git clone https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git
PS:这里要求输入的账户指的是全志在线开发者论坛的账号,而非登录论坛时需要输入的手机号。例如,我的论坛账号是zoone。
Username for 'https://sdk.aw-ol.com': zoone
Password for 'https://zoone@sdk.aw-ol.com':运行
git config --global user.email "you@example.com"
git config --global user.name "Your Name"然后初始化
repo init -u https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git -b master -m tina-d1-h.xml
输入y显示
repo has been initialized in /home/zone/tina-d1-h输入
repo sync拉取SDK
然而拉取的SDK编译器版本为2020年,cc版本为8.1.0 -
回复: 尝试使用D1-H开发板集成区块链轻节点发布在 MR Series
目前能够直接获取的编译器版本最新为2021年,该编译器cc的版本只有10.2.0,依然很低,在编译轻节点源码时会出现编译器本身的兼容性问题:http://netstorage.allwinnertech.com:5000/sharing/b8mBL1xWa
请问是否存在更高版本的适配D1-H的交叉编译器?
-
回复: 尝试使用D1-H开发板集成区块链轻节点发布在 MR Series
目前使用Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V3.0.1版本编译器编译源码,在D1-H开发板上运行报错。
第一个错误是高地址指令,这些指令证明程序存在超过 2GiB 的大地址访问,与开发板旧内核(5.4.61)的地址解析逻辑不兼容。该错误通过在cmake中添加相关参数可以解决。
第二个错误是非对齐访问,问题根源是系统 libstdc++ 库未启用 -mstrict-align 编译。该错误暂时未解决。
请问全志官方是否提供了Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V3.0.1的源码以重新编译libstdc++ 库?或者是否存在较高cc版本且适配D1-H开发板的编译器?