将 word2vec 移植到 RISC-V.. 潜在的代理内核问题?

Porting word2vec to RISC-V.. potential proxy kernel issue?

我们正在尝试将 word2vec 移植到 RISC-V。为此,我们已经使用交叉编译器编译了 word2vec,并试图 运行 它在 Spike 上。

交叉编译器编译标准 RISC-V 基准测试,它们 运行 在 Spike 上没有失败,但是当我们对 word2vec 使用相同的设置时,它失败 "bad syscall #179!"。我们尝试了两个不同的版本,在执行这些指令时都在相同的地方失败了一两分钟进入 运行。在循环了 100k 次之后,我们看到 C1、C2 打印然后崩溃。我们认为这更像是一个 spike/pk 问题,而不是 word2vec 问题。

有没有人在将代码移植到 RISC-V 时有过类似的经历?关于我们如何追踪它是否是代理内核的任何想法?

一个相关的问题是关于让 gdb 与 Spike 一起工作。将 post 分开。

谢谢。

riscv-pk 不支持所有可能的系统调用。您需要追踪它是哪个系统调用,以及您是否可以在 riscv-pk 中实现它,或者您是否需要在不同的内核上移动到 运行 它。例如,riscv-pk 不支持任何与线程相关的系统调用,因为多线程内核支持显然不是 riscv-pk 的目标。

我通常也会对使用 riscv-pk 持谨慎态度。这是一个非常简单的瘦内核,一开始非常适合 运行 newlib 用户应用程序,但它缺乏针对它的严格测试和验证工作,因此 运行 强调虚拟内存系统的应用程序依赖于很多系统调用(iotcl 和朋友),或者期待更多类似 glibc 的环境可能会出现问题。