集成外部/自定义代码
这个例子展示了如何集成外部代码或自定义代码来增强生成代码的性能。虽然MATLAB®编码器™为大多数应用程序生成优化的代码,您可能有针对特定需求优化的自定义代码。例如:
您有针对目标环境优化的自定义库。
控件不支持的函数的自定义库MATLAB编码器.
您拥有满足公司设定的标准的自定义库。
在这种情况下,您可以将自定义代码与生成的代码集成在一起MATLAB编码器.
这个例子说明了如何集成这个函数cublasSgemm
来自NVIDIA®CUDA®基本线性代数子例程(CUBLAS)库生成的代码。该函数在GPU (Graphics Processing Unit)上执行矩阵乘法操作。
定义一个类
ExternalLib_API
它来自于类编码器。ExternalDependency
.ExternalLib_API
属性的接口CUBLAS
库通过以下方法:getDescriptiveName
:返回的描述性名称ExternalLib_API
用于错误消息。isSupportedContext
:确定构建上下文是否支持CUBLAS
图书馆。updateBuildInfo
:将头文件路径和链接文件添加到构建信息中。GPU_MatrixMultiply
对象的接口CUBLAS
库函数cublasSgemm
.
使用方法中定义的接口执行矩阵乘法
GPU_MatrixMultiply
以及构建信息ExternalLib_API
,在MATLAB代码中包含以下行:C = ExternalLib_API.GPU_MatrixMultiply (A, B);
例如,您可以定义一个MATLAB函数
Matrix_Multiply
它只执行这个矩阵乘法。函数C = Matrix_Multiply(A, B)% # codegenC = ExternalLib_API.GPU_MatrixMultiply (A, B);
定义一个
墨西哥人
配置对象使用coder.config
.使用CUBLAS
库,将代码生成的目标语言设置为c++
.cfg = coder.config (墨西哥人的);cfg。TargetLang =“c++”;
为
Matrix_Multiply
使用cfg
作为配置对象和两个2 × 2
类型矩阵单
作为参数。自cublasSgemm
支持数据类型的矩阵乘法浮动
,对应的MATLAB矩阵必须有类型单
.codegen配置cfgMatrix_Multiply...arg游戏{(2, '单'),则(2,'单')}
测试生成的
墨西哥人
函数Matrix_Multiply_mex
使用两个2 × 2
类型的单位矩阵单
.Matrix_Multiply_mex(眼(2“单一”)、眼睛(2“单一”))
输出也是a
2 × 2
单位矩阵。
另请参阅
coder.ceval
|coder.opaque
|coder.rref
|coder.wref
|断言
|编码器。ExternalDependency
|编码器。BuildConfig