《電子技術應用》
您所在的位置:首頁 > 可编程逻辑 > 设计应用 > MATLAB到高性能C的代码转换系统设计与实现
MATLAB到高性能C的代码转换系统设计与实现
信息技术与网络安全 6期
余泽霖1,2,徐 云1,2
(1.中国科学技术大学 计算机科学与技术学院,安徽 合肥230026; 2.安徽省高性能计算重点实验室,安徽 合肥230026)
摘要: MATLAB被广泛应用于算法设计及验证,但由于平台限制及性能因素影响,实际工作中通常使用C语言及高性能库来重写和优化代码。人工转换MATLAB到C工作繁琐,而大部分已有的自动转换方法又难以解决MATLAB的高性能矢量运算和库函数与C的对接问题。为此,设计了一个MATLAB到高性能C的自动转换系统,通过将MATLAB代码转换为中间表示,进一步转换为C代码。同时,将MATLAB的高性能矢量运算和库函数对接到高性能C函数库Math Kernel Library(MKL)上。在相同MATLAB代码上的实验结果表明,该系统转换生成的C代码性能与人工编写的C代码相当,优于已有的转换方法生成的C代码。
中圖分類號: TP311.1
文獻標識碼: A
DOI: 10.19358/j.issn.2096-5133.2022.06.007
引用格式: 余澤霖,徐云. MATLAB到高性能C的代碼轉換系統設計與實現[J].信息技術與網絡安全,2022,41(6):36-42,56.
Design and implementation of a MATLAB to high-performance C code conversion system
Yu Zelin1,2,Xu Yun1,2
(1.School of Computer Science and Technology,University of Science and Technology of China,Hefei 230026,China; 2.Key Laboratory of High Performance Computing of Anhui Province,Hefei 230026,China)
Abstract: MATLAB is widely used in algorithm design and verification, but due to the limitation of platform and poor performance, C language and high-performance libraries are usually used to rewrite and optimize the code in practical work. Manual conversion from MATLAB to C is cumbersome, and most existing automatic conversion methods are not able to bridge the high-performance vector operations and library functions of MATLAB with C. Therefore, an automatic system converting MATLAB to high-performance C code is designed. By converting MATLAB code into intermediate representation, it is further converted into C code. At the same time, the high-performance vector operations and library functions of MATLAB are bridged with the functions of the high-performance C Math Kernel Library(MKL). The experimental results on the same MATLAB codes show that the performance of the C code converted by this system is equivalent to that of the manually written C code, and is better than that converted by the existing conversion methods.
Key words : MATLAB;code conversion;high-performance code;MKL function library

0 引言

MATLAB由于其強大的功能、友好的開發界面和簡單易用的編程語言形式而被開發人員廣泛使用,許多企業和科研單位都存在著大量的MATLAB遺留代碼(Legacy Code)。但由于MATLAB程序運行依賴于MATLAB軟件系統,部分工作平臺無法滿足要求,并且它的運行速度相較于C等更底層的語言慢,無法滿足高性能計算的需求,通常需要將這些遺留MATLAB代碼轉換為C代碼。而人工轉換代碼需要付出高昂的人力成本,因此,理想的解決方案是將MATLAB代碼自動轉換成C代碼。

程序轉換可以節省軟件開發的成本,并在軟件的移植、重用、更新和編譯等方面有著重要的應用[1],因此在國內外有大量的對編程語言轉換的研究。本文對已有的編程語言轉換方法進行了借鑒和改進,提出了一個MATLAB到C的自動轉換方法,著重解決了以下三個關鍵問題:一是引入了一種基于抽象語法樹(Abstract Syntax Tree,AST)的中間表示(Intermediate Representation,IR)來解決兩語言間的差異問題,為MATLAB和C轉換過程中提供統一的接口,避免為兩種語言的語法結構映射制定繁瑣的規則。二是由于C中變量需要聲明后使用,而MATLAB不需要,因此在轉換時需要對MATLAB中的矩陣變量的類型信息(矩陣的大小和矩陣元素的類型)進行識別。已有許多對此類高級語言的變量類型信息識別的研究成果[2-6],本文借鑒并實現了MATLAB到C的轉換過程中的類型信息推導。三是MATLAB中大部分表達式是矢量間的運算,直接轉換到C語句會導致性能下降,并且很多內置的科學計算函數沒有直接對應的C代碼。本文設計了轉換算法,使用C數學核心庫(Math Kernel Library,MKL)中的函數為MATLAB中的矢量運算和庫函數生成高性能C代碼段,解決轉換困難和性能問題。本文實現的系統能幫助開發人員將MATLAB代碼自動轉換生成C代碼,提升代碼性能,減少人工成本。




本文詳細內容請下載http://m.tom3567.com/resource/share/2000004533




作者信息:

余澤霖1,2,徐  云1,2

(1.中國科學技術大學 計算機科學與技術學院,安徽 合肥230026;

2.安徽省高性能計算重點實驗室,安徽 合肥230026)




微信圖片_20210517164139.jpg

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲视频在线观看日本a| 久久在精品线影院精品国产| www.中文字幕在线| 中文字幕在线亚洲精品| 欧美激情亚洲国产| 国产精品夫妻激情| 99热亚洲精品| 国产欧美在线观看| 久久久久久久久91| 日本婷婷久久久久久久久一区二区| 俺去了亚洲欧美日韩| 国产免费成人av| 日韩亚洲欧美中文高清在线| 99视频在线| 国产精品高清在线| 国产区日韩欧美| 国产日韩欧美日韩| 国产综合欧美在线看| 久久精品国产精品国产精品污| 少妇av一区二区三区无码| 99精品视频在线看| 国产成人a亚洲精品| 国产精品久久波多野结衣| 国产精品欧美在线| 国产日韩中文字幕| 国产欧美一区二区三区久久 | 国产精品综合不卡av| 久久av高潮av| 久久久神马电影| 久久99精品国产99久久| 九九九九九九精品| 久久精品视频亚洲| 激情小说综合区| 国产伦精品一区二区三区视频免费| 精品国偷自产在线视频99| 欧美激情一级欧美精品| 欧美激情极品视频| 国内精品久久久久伊人av| 国产精品香蕉国产| 国产精品一区二区不卡视频| 国产精品中文字幕久久久|