我们正在尝试将word2vec移植到RISC-V。为此,我们使用交叉编译器编译了word2vec,并尝试在Spike上运行它。
交叉编译器编译标准的RISC-V基准测试,它们在Spike上运行时没有失败,但是当我们对word2vec使用相同的设置时,它会失败并且#34;坏系统调用#179!"。我们尝试了两个不同的版本,在执行这些指令时,它们都在同一个地方失败了一两分钟。经过几十次循环后,我们看到C1,C2打印出来然后发生了撞击。我们认为这更像是一个spike / pk问题,而不是word2vec问题。
将代码移植到RISC-V时有没有类似的经历?关于我们如何追踪它是否是代理内核的任何想法?
一个相关的问题是让gdb与Spike合作..将单独发布。
谢谢。
答案 0 :(得分:1)
riscv-pk不支持所有可能的系统调用。您需要跟踪它是哪个系统调用,以及是否可以在riscv-pk中实现它,或者是否需要在不同的内核上运行它。例如,riscv-pk不支持任何与线程相关的系统调用,因为多线程内核支持是明确的riscv-pk非目标。
我一般也会担心使用riscv-pk。它是一个非常简单的瘦内核,非常适合在开始时运行newlib用户应用程序,但它缺乏严格的测试和验证工作,因此运行压缩虚拟内存系统的应用程序依赖于大量的系统调用(iotcl和朋友),或者期望更多类似glibc的环境可能会有问题。