文件

coder.com回调类

包裹:编码员

用于指定BLAS库和CBLAS标题的抽象类以及BLAS中的BLAS中的数据类型信息

描述

Coder.Blascallback.是一个抽象类,用于定义Blas回调类。Blas Callback类指定用于在Matlab生成的代码中使用的Blas呼叫的Blas库和CBLAS报头和数据类型信息®代码。如果你使用Matlab Coder™生成独立代码或为MATLAB函数块,对于某些向量和矩阵函数调用,您可以生成BLAS调用。要生成BLAS调用,请将相应的配置参数设置为BLAS回调类的名称。

  • 用于使用Matlab编码器Codegen.命令集CustomBlascallback.

  • 用于使用Matlab编码器应用程序,集自定义blas库回调

  • 用于代码生成MATLAB函数利用金宝app®编码员, 放自定义blas库回调

使用名称定义Blas回调类Usemyblas.,请执行以下列定义文件的第一行。

classdef useMyBLAS
           
您必须定义updateBuildInfogetHeaderFileName,及getBLASIntTypeName方法,其他方法,,GetDoubleComplexTypeNamegetbrassinglecoMplextypename.,及Underenumnameratherthantypedef.,已在中实施Coder.Blascallback.。在某些情况下,当您定义回调类时,您必须使用自己的定义覆盖这些方法。所有方法都是静态的,没有编译。

类属性

摘要
真的

有关类属性的信息,请参阅类属性(MATLAB)。

方法

展开全部

例子

全部崩溃

此示例是BLAS回调类的实现mklcallback.用于链接到英特尔MKL.Windows上的BLAS库®站台。mklcallback.不包括的显式实现GetDoubleComplexTypeNamegetbrassinglecoMplextypename.,及Underenumnameratherthantypedef.。它从中继承这些方法Coder.Blascallback.

Classdef.mklcallback 方法(静态)功能updateBuildInfo(buildInfo,~)libPath=fullfile(pwd,'mkl''赢''lib'“intel64”);优先权='';libprecompiled = true;liblinkonly = true;libs = {'mkl_intel_ilp64.lib''mkl_intel_thread.lib'“mkl_core.lib”};buildinfo.addlinkObjects(libs,libpath,libpriority,libprecompiled,liblinkonly);buildinfo.addlinkObjects('libiomp5md.lib',完整文件(matlabroot,'bin''win64'),......libpriority,libprecompiled,liblinkonly);buildinfo.addincludepaths(fullfile(pwd,'mkl''赢''包括'));buildInfo.addDefines('-dmkl_ilp64');结尾功能headerName=getHeaderFilename()headerName='mkl_cblas.h';结尾功能inttypename = getblasinttypename()inttypename =“MKL_INT”;结尾结尾结尾

将此示例类用作编写自己的BLAS回调类的模板。

如果您使用的是其他BLAS库,请更换'mkl_cblas.h'使用CBLAS头文件的名称。

如果您使用的是其他BLAS库,请更换“MKL_INT”使用CBLAS整数数据类型的名称。

更新构建信息updateBuildInfo根据BLAS库的名称和位置,使用构建信息AddLinkObjects.方法。如果使用“英特尔MKL BLAS”库,请使用链接线路顾问要查看您的用例建议使用哪些库和编译器选项。

更新构建信息updateBuildInfo使用CBLAS头文件的位置,使用构建信息附加路径方法。

将预处理器宏定义添加到构建信息中updateBuildInfo,使用构建信息添加定义方法。

在中指定编译器选项的步骤updateBuildInfo,使用构建信息addCompileFlags方法。

在中指定链接器选项的步骤updateBuildInfo,使用构建信息addlinkflags.方法。

GetDoubleComplexTypeName方法在生成的代码中返回用于双精度复杂变量的类型。如果您的Blas库需要除此之外的类型双重的*空虚*对于双重精度复杂阵列参数,请在回调类定义中包含此方法。

功能doublecomplextypename = getblasdoublecomplextypename()doublecomplextypename =“我的双重复杂类型”;结尾

代替我的双复合型使用BLAS库需要双精度复杂阵列参数的类型。

getbrassinglecoMplextypename.方法返回生成的代码中用于单精度复杂变量的类型浮动*空虚*对于单精度复杂阵列参数,请在回调类定义中包含此方法。

功能singleComplexTypeName=getBLASSingleComplexTypeName()doubleComplexTypeName='my_single_complex_type';结尾

代替my_single_complex_type.使用BLAS库为单精度复杂数组参数所采用的类型。

Underenumnameratherthantypedef.方法返回错误的默认情况下。如果BLAS库中的枚举类型包括枚举关键字,重新定义此方法返回真的在回调类定义中。

功能p=useEnumNameRatherThanTypedef()p=true;结尾

此示例是BLAS回调类的实现OpenBlascallback.用于链接到森林图书馆在Linux上®站台。OpenBlascallback.没有的显式实现GetDoubleComplexTypeNamegetbrassinglecoMplextypename.,及Underenumnameratherthantypedef.。它从中继承这些方法Coder.Blascallback.

Classdef.OpenBlascallback 方法(静态)功能updateBuildInfo(buildInfo,buildctx)libPriority='';libPreCompiled=true;libLinkOnly=true;libName='libopenblas.a';libPath=fullfile(pwd,'openblas');Incath = Fullfile(PWD,'openblas'); buildInfo.addLinkFlags('-lpthread');buildinfo.addlinkObjects(libname,libpath,......libPriority、libPreCompiled、libLinkOnly);buildInfo.addincludepath(incPath);结尾功能headerName=getHeaderFilename()headerName=“cblas.h”;结尾功能inttypename = getblasinttypename()inttypename ='blasint';结尾结尾结尾

如果生成C ++代码,其中包含对OpenBlas库函数的调用,请使用该代码进行编译-迂腐的选项产生警告。禁用-迂腐的编译器选项,在updateBuildInfo方法,包括这些行:

如果buildctx.getTargetLang()=='c ++'buildInfo.addCompileFlags('-wno-poictant');结尾

OpenBlas不支持C89 / C金宝app90标准。

在R2018B中介绍