在MATLAB中要實現整合與部屬的整體框架中,大概會有下圖的幾種情境與整合方式,主要我們可以分成兩大塊來看。
- MATLAB Compiler & Compiler SDK
- MATLAB Coder
1.MATLAB Compiler & Compiler SDK:
我們可以將MATLAB Code的程式碼轉成.exe執行檔與幾種語言的DLL與Package,但這樣的情境必須在Enterprise Systems中才有辦法運行,主要是會需要使用MATLAB的Runtime來做執行。
目前Runtime支援的環境有以下Windows, Linux, Mac,詳細Runtime在各個MATLAB版本與對應OS的支援狀況請看以下連結:
另外在Compiler與CompilerSDK中的詳細介紹與設定,會在之後的篇章中跟大家再做深入的介紹,初步的內容可以參考以下
2. MATLAB Coder:
使用Coder的情境大概會是以下兩種:
- 需要將MATLAB Code轉成其他語言,放在別的硬體上運行,因此就無法使用上述有MATLAB Runtime的方式進行,就一定要使用Coder來轉Code。
- 需要將MATLAB Code轉乘其他語言來做加速,或者是在原生語言上做整合與Lib的使用等,例如會有需要C++ Source的需求等。
所以在這邊幾個情境我們會對應到的幾種Coder
C/C++ > MATLAB Coder
CUDA > GPU Coder
HDL > HDL Coder
PLC > Simulink PLC Coder
以上就是針對於轉Code需求相關係的Coder,相關連結列在下方:
MATLAB Coder官網連結
MATLAB Coder Documentation
GPU Coder官網連結
GPU Coder Documentation
那在Coder中還有一個比較特別一點的使用用途,就是利用Coder將Deep Learning的模型從MATLAB轉成C/C++、CUDA、RTL等。
那我們就要額外參考以下這張圖了,因為對應在深度學習框架中,針對於不同的硬體環境會有不同的Library來做使用,相對起來也會比較複雜一些。
但還好MATLAB現在針對於整體的環境建立流程蠻容易的,這在後續的文章中也會跟大家介紹各個Coder的詳細流程(都做好筆記啦,只差打成文章了)。
那如果我有一些其他框架或是不同語言的深度學習模型,是否就可以透過此框架進行部屬呢?答案是可以的,就可以參考以下的圖:
目前MATLAB可以吃一些框架的深度學習模型,TensorFlow、Pytorch、Caffe、ONNX,或是直接吃TensorFlow Lite來進行部屬,這部分的內容有一些可以先參考上一篇文章:
實現整合系列第一期:MATLAB中寫Python,與TensorFlow,PyTorch整合
那剩下的一些其他操作,也會在後續文章在做介紹。