Page 37 - 《软件学报》2026年第6期
P. 37

2356                                                       软件学报  2026  年第  37  卷第  6  期


                 系统中   LLVM IR  文件在终端设备与云端服务器上的实际部署效率与用户体验, RuyiBuild                 工具链设计并实现了一
                 套客户端与云端协同的双模式           LLVM IR  文件动态转换与资源自适应调度机制. 在云端对              IR  进行转换相较于用户
                 完全从源码构建软件相比, 更能确保软件的一致性, 更能确保相应编译选项真正被使用, 也能降低用户的开发负
                 担. 该机制充分考虑了客户端设备与云端服务器两类目标场景在计算资源、使用场景与用户体验需求上的显著差
                 异, 分别设计了对应的动态转换策略与资源调度方案, 从而实现了从                     LLVM IR  到目标平台精细优化的        ELF  文件
                 的高效转换与部署.
                    如图  3  所示, 在客户端系统中, 首先创建一个只有单函数的              C  文件  (empty.c); 然后根据硬件的指令集信息, 使
                 用  clang  将该  C  文件编译为  LLVM IR bitcode 格式的模板文件; 该  LLVM IR bitcode 模板文件包含了方便使用的、
                 以  LLVM IR bitcode 格式存储的当前   CPU  的指令集信息.


                                        IR RPM                                empty.c



                                                                   clang+/proc/cpuinfo

                                     /usr/lib64/llvmir/
                                     {                                       empty.bc
                                     libx.so.1
                                     libx.so.1_cmd}


                                                     libx.so.1


                                                       llvm-attribute-adjust


                                 libx.so.1_cmd

                                                       新 libx.so.1
                                                       /var/lib/llvmir/temp/




                                                                                 APP
                                                          clang+lld
                                                                                    glib.c
                               系统负载监控                                               使用配置文件
                                                                                    环境变量
                                                                                    指定路径  :
                                                        ELF格式                       /var/lib/llvmir/lib
                                                        libx.so.1
                                                        /var/lib/llvmir/lib/
                                                                               加速运行


                                                图 3 RuyiBuild  客户端  IR  转换

                    如图  3  所示, 用  llvm-attribute-adjust 工具, 基于模板文件提供的信息, 将图   2  中打包得到的    LLVM IR bitcode
                 文件进行修改, 将其中的原始指令集信息修改为模板文件中的最适合本机的指令集信息, 并生成一个新的                                  LLVM
                 IR bitcode  文件. 可以根据记录的    LLVM 版本和编译动态链接库使用的命令, 使用与编译该软件时相同版本的
   32   33   34   35   36   37   38   39   40   41   42