LoongArch-Documentation icon indicating copy to clipboard operation
LoongArch-Documentation copied to clipboard

请问一下龙芯论坛上提交的x264是在哪里可以获取?

Open soaringleefighting opened this issue 2 years ago • 14 comments

龙芯论坛上:x264-0.152-1在Loongnix上发布 [2020-03-03]

soaringleefighting avatar Oct 20 '21 12:10 soaringleefighting

@yetist @qmuntal @xry111 @scylaac

soaringleefighting avatar Oct 20 '21 12:10 soaringleefighting

另外请教一下,龙芯3A4000CPU支持mips MSA吗?

soaringleefighting avatar Oct 20 '21 12:10 soaringleefighting

另外请教一下,龙芯3A4000CPU支持mips MSA吗?

支持,我编译 LFS 的时候全程开 -mmsa 没问题。但是上游的 x264 我记得 MSA 相关的内嵌汇编代码写得有 bug 需要处理一下。

(也可能是 x265,记不太清了。)

xry111 avatar Oct 20 '21 13:10 xry111

@xry111 感谢即使回复。我这边运行开启MSA优化的x264,报错:非法指令段错误。 龙芯论坛上的x264-0.152-1是开源的吗?在哪里可以获取呢?

soaringleefighting avatar Oct 21 '21 02:10 soaringleefighting

@xry111 感谢即使回复。我这边运行开启MSA优化的x264,报错:非法指令段错误。

非法指令和段错误是完全不同的概念,如果报非法指令可以拿 GDB 看一下具体是哪条指令的问题。

我不确定是不是所有 3A4000 都支持 MSA,应该可以用 lscpu 命令查看。

龙芯论坛上的x264-0.152-1是开源的吗?在哪里可以获取呢?

我不太清楚,我在 3A4000 上编译系统用的是上游软件包。

xry111 avatar Oct 21 '21 11:10 xry111

@xry111 感谢答复。

soaringleefighting avatar Oct 22 '21 01:10 soaringleefighting

@xry111 我这边debug发现,是下面这种指令导致的非法指令问题: v16u8 store = { 0 };

似乎不能对v16u8/v8i16等类型的变量进行赋值或者取值操作。

soaringleefighting avatar Oct 22 '21 04:10 soaringleefighting

找到问题原因了,gcc7.5.0开启-mmsa出现illegal instruction,对v16u8类型的变量进行赋值报错。

soaringleefighting avatar Oct 22 '21 09:10 soaringleefighting

@xry111 @yetist @qmuntal @scylaac 请教一下,如下图是我这边龙芯机器的cpuinfo,从图中ASEs implemented一行可知,没有msa。这个msa选项是从哪里开启呢? image

soaringleefighting avatar Oct 26 '21 09:10 soaringleefighting

这个msa选项是从哪里开启呢?

可能要重新编译内核并且启用 CPU_HAS_MSA?

xry111 avatar Oct 26 '21 10:10 xry111

@xry111 好的,非常感谢!

soaringleefighting avatar Oct 27 '21 02:10 soaringleefighting

@xry111 再请教一下哈: 我这边银河麒麟操作系统版本是:Linux version 4.4.131-20200710.kylin.desktop-generic (YHKYLIN-OS@Kylin) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6kord1~16.04.4k2) ) #kylin SMP PREEMPT Fri Jul 10 13:48:38 CST 2020

可以说一下你这边用的版本吗?是否是更高版本的系统就支持msa了呢?msa特性跟系统版本有关系吗?

soaringleefighting avatar Oct 28 '21 08:10 soaringleefighting

@xry111 再请教一下哈: 我这边银河麒麟操作系统版本是:Linux version 4.4.131-20200710.kylin.desktop-generic (YHKYLIN-OS@Kylin) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6kord1~16.04.4k2) ) #kylin SMP PREEMPT Fri Jul 10 13:48:38 CST 2020

可以说一下你这边用的版本吗?是否是更高版本的系统就支持msa了呢?msa特性跟系统版本有关系吗?

我用的自己编译的系统,内核是 5.10 的。

MSA 手册说要使用 MSA,必须先使能 config5 寄存器的 MSAEn bit。这项工作必须由内核完成,所以是需要内核支持的。具体到 3A4000 来说,需要使用 torvalds/linux@7507445b1 以后的内核版本 (或者手动合入 MSA 支持),并且在编译内核时启用 CONFIG_CPU_HAS_MSA。对于特定发行版,建议咨询发行版的开发团队。

xry111 avatar Oct 29 '21 11:10 xry111

@xry111 非常感谢您的回复,对我的帮助很大,谢谢。

soaringleefighting avatar Nov 01 '21 07:11 soaringleefighting

找到问题原因了,gcc7.5.0开启-mmsa出现illegal instruction,对v16u8类型的变量进行赋值报错。

@soaringleefighting 碰到了一样的问题, 请问下咋解决的呢?

pengbins avatar Aug 07 '22 12:08 pengbins