跳转至

安装驱动

https://www.jemoic.com/drive_67 (驱动下载地址)

https://esnl.hnu.edu.cn/info/1002/2807.htm (Paddle Lite适配景嘉微JM9230 GPU,实现AI模型推理计算)

采用自主设计的国产 JM9230 高性能图形处理器。支持4路独立显示输出,支持多屏同时输出,支持4路视频解码,1路视频编码,支持OpenGL4.0、Vulkan1.1等图形编程接口,支持OpenCL3.0计算编程接口,支持4路4K@60fps HDMI2.0外视频输入。全面支持国产CPU、国产操作系统和国产固件,可广泛应用于PC、服务器、图形工作站等计算机设备,满足地理信息系统、三维测绘、三维制图、媒体处理、辅助设计、显示渲染等高性能显示需求和人工智能计算需求。

https://www.jemoic.com/drive_67 链接中有三款驱动,作用如下:

这里选择9系列产品型号,kylin操作系统,v10-aarch64架构。

mwv207-vaapi:主要用于支持视频解码加速。如在基于 Qt+libvlc 实现多路拉取摄像头 rtsp 数据流并实时显示的项目中,通过指定--avcodec-hw=vaapi参数,可利用景嘉微 9230 显卡的硬件解码能力,减轻 CPU 负担,实现高效的视频流处理。在奇安信浏览器中,也需要安装此驱动来实现硬件解码功能,以提高视频播放的性能和效率。 mwv207-dkms:是内核驱动程序,用于将显卡与操作系统的内核进行连接和适配,使操作系统能够识别和控制景嘉微 JM9230 显卡,为显卡的正常工作提供底层支持。比如在飞腾 CPU、银河麒麟 V10 操作系统的环境中,安装mwv207-dkms驱动是让 JM9230 显卡能够被系统识别和使用的基础步骤。 mwv207-dev:属于应用库驱动,为开发人员提供了一系列的函数和接口,方便他们在开发应用程序时调用显卡的功能,以实现图形渲染、计算加速等操作。例如在 Paddle Lite 推理引擎对景嘉微 JM9230 GPU 的适配过程中,就需要安装mwv207-dev应用库,以利用显卡的计算能力来加速 AI 模型的推理计算。

芯片: Phytium,FT-2000/4

系统: VERSION_US="Kylin Linux Desktop V10 (SP1)"

显卡:JM9230

1. 安装驱动

Bash
sudo dpkg -i *.deb

2. 查询驱动

Bash
sudo dpkg -l | grep mwv207
以下为输出
ii  mwv207                                                1.3.1-0kylin1                          arm64        MWV207 driver for DRM package. Build by ChangSha JingJia Micro Company.
ii  mwv207-dev                                            1.5.0-0kord1                           arm64        MWV207 driver for Xorg and GL package. Build by ChangSha JingJia Micro Company.
ii  mwv207-dkms                                           1.5.0-0kord1                           all          MWV207 driver for DRM package. Build by ChangSha JingJia Micro Company.

安装完成后,可以在指令位置看到so文件

这里mwv207表示9系列,mvw206表示7系列。

Bash
ls /lib/aarch64-linux-gnu/mwv207
libCLC.so  libEGL.so.1      libgbm_jm.so  libgbm.so.1      libGLES_CL.so  libGLESv1_CL.so  libGLESv2.so    libGLSLC.so  libGL.so.1    libGL.so.1.2.0  libJmgpuOpenCL30.so  libOpenCL.so.1  libOpenCL.so.3.0.0
libEGL.so  libEGL.so.1.5.0  libgbm.so     libgbm.so.1.0.0  libGLES_CM.so  libGLESv1_CM.so  libGLESv2.so.2  libGL.so     libGL.so.1.2  libJMC.so       libOpenCL.so         libOpenCL.so.3  libSPIRV_jm.so
clinfo查看是否安装成功(关机,插卡后使用)
Text Only
export LD_LIBRARY_PATH=/lib/aarch64-linux-gnu/mwv207:$LD_LIBRARY_PATH
clinfo   # 能看到Jingjia Micro信息

3. 卸载驱动

Text Only
sudo dpkg -P mwv207-dkms
sudo dpkg -P mwv207-dev

安装驱动重启之后生效。

PS: uname -a查询系统的内核版本,此版本驱动,只支持麒麟5.4.18内核的系统。

Text Only
Linux llvm-gw001m1aftf 5.4.18-53-generic #42-KYLINOS SMP Fri Mar 4 06:09:02 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
Text Only
景嘉微驱动支持的是SPIRV 1.5,但我们反汇编出来的却是1

~/workspace/SPIRV-LLVM-Translator/tools/llvm-spirv/llvm-spirv.cpp

C++
以下是LLVM9.0
static cl::opt<VersionNumber> MaxSPIRVVersion(
    "spirv-max-version",
    cl::desc("Choose maximum SPIR-V version which can be emitted"),                                                                                                                                                
    cl::values(clEnumValN(VersionNumber::SPIRV_1_0, "1.0", "SPIR-V 1.0"),
               clEnumValN(VersionNumber::SPIRV_1_1, "1.1", "SPIR-V 1.1"),
               clEnumValN(VersionNumber::SPIRV_1_2, "1.2", "SPIR-V 1.2"),
               clEnumValN(VersionNumber::SPIRV_1_3, "1.3", "SPIR-V 1.3"),
               clEnumValN(VersionNumber::SPIRV_1_4, "1.4", "SPIR-V 1.4")),
    cl::init(VersionNumber::MaximumVersion));


以下为LLVM17
static cl::opt<VersionNumber> MaxSPIRVVersion(                                                                                                                                                                     
    "spirv-max-version",
    cl::desc("Choose maximum SPIR-V version which can be emitted"),
    cl::values(clEnumValN(VersionNumber::SPIRV_1_0, "1.0", "SPIR-V 1.0"),
               clEnumValN(VersionNumber::SPIRV_1_1, "1.1", "SPIR-V 1.1"),
               clEnumValN(VersionNumber::SPIRV_1_2, "1.2", "SPIR-V 1.2"),
               clEnumValN(VersionNumber::SPIRV_1_3, "1.3", "SPIR-V 1.3"),
               clEnumValN(VersionNumber::SPIRV_1_4, "1.4", "SPIR-V 1.4"),
               clEnumValN(VersionNumber::SPIRV_1_5, "1.5", "SPIR-V 1.5"),
               clEnumValN(VersionNumber::SPIRV_1_6, "1.6", "SPIR-V 1.6")),
    cl::init(VersionNumber::MaximumVersion));
Text Only
~/SPIRV-LLVM-Translator-9.0.1-1 目前只支持SPIRV 1.0和到