安装驱动
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. 安装驱动¶
2. 查询驱动¶
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系列。
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查看是否安装成功(关机,插卡后使用)¶
export LD_LIBRARY_PATH=/lib/aarch64-linux-gnu/mwv207:$LD_LIBRARY_PATH
clinfo # 能看到Jingjia Micro信息
3. 卸载驱动¶
安装驱动重启之后生效。
PS: uname -a查询系统的内核版本,此版本驱动,只支持麒麟5.4.18内核的系统。
Linux llvm-gw001m1aftf 5.4.18-53-generic #42-KYLINOS SMP Fri Mar 4 06:09:02 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
~/workspace/SPIRV-LLVM-Translator/tools/llvm-spirv/llvm-spirv.cpp
以下是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));