主要内容

集成外部/自定义代码

这个例子展示了如何集成外部代码或自定义代码来增强生成代码的性能。虽然MATLAB®编码器™为大多数应用程序生成优化的代码,您可能有针对特定需求优化的自定义代码。例如:

  • 您有针对目标环境优化的自定义库。

  • 控件不支持的函数的自定义库金宝appMATLAB编码器

  • 您拥有满足公司设定的标准的自定义库。

在这种情况下,您可以将自定义代码与生成的代码集成在一起MATLAB编码器

这个例子说明了如何集成这个函数cublasSgemm来自NVIDIA®CUDA®基本线性代数子例程(CUBLAS)库生成的代码。该函数在GPU (Graphics Processing Unit)上执行矩阵乘法操作。

  1. 定义一个类ExternalLib_API它来自于类编码器。ExternalDependencyExternalLib_API属性的接口CUBLAS库通过以下方法:

    • getDescriptiveName:返回的描述性名称ExternalLib_API用于错误消息。

    • is金宝appSupportedContext:确定构建上下文是否支持金宝appCUBLAS图书馆。

    • updateBuildInfo:将头文件路径和链接文件添加到构建信息中。

    • GPU_MatrixMultiply对象的接口CUBLAS库函数cublasSgemm

    ExternalLib_API.m

  2. 使用方法中定义的接口执行矩阵乘法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);
  3. 定义一个墨西哥人配置对象使用coder.config.使用CUBLAS库,将代码生成的目标语言设置为c++

    cfg = coder.config (墨西哥人的);cfg。TargetLang =“c++”
  4. Matrix_Multiply使用cfg作为配置对象和两个2 × 2类型矩阵作为参数。自cublasSgemm金宝app支持数据类型的矩阵乘法浮动,对应的MATLAB矩阵必须有类型

    codegen配置cfgMatrix_Multiply...arg游戏{(2, '单'),则(2,'单')}
  5. 测试生成的墨西哥人函数Matrix_Multiply_mex使用两个2 × 2类型的单位矩阵

    Matrix_Multiply_mex(眼(2“单一”)、眼睛(2“单一”))

    输出也是a2 × 2单位矩阵。

另请参阅

||||||

相关的话题