主要内容

Coder.Blascallback.class

包裹:编码器

用于指定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.,请执行以下列定义文件的第一行。

使用myyblas <编码器。BLASCallback
必须定义updateBuildInfogetHeaderFileName,getBLASIntTypeName方法。其他方法,getBLASDoubleComplexTypeNamegetbrassinglecoMplextypename.,Underenumnameratherthantypedef.,已经实现Coder.Blascallback..在某些情况下,当您定义回调类时,您必须使用自己的定义覆盖这些方法。所有方法都是静态的,没有编译。

类属性

摘要
真正的

有关类属性的信息,请参阅类属性

方法

展开全部

例子

全部折叠

这个示例是BLAS回调类的一个实现mklcallback.链接到英特尔MKL.Windows上的BLAS库®平台。mklcallback.不包括显式实现getBLASDoubleComplexTypeNamegetbrassinglecoMplextypename.,Underenumnameratherthantypedef..它继承了这些方法Coder.Blascallback.

Classdef.mklcallback 方法(静态)函数updateBuildInfo(buildInfo, ~) libPath = fullfile(pwd, ~)'mkl''赢''lib'“intel64”);libPriority ='';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”fullfile (matlabroot'bin''win64'),......libPriority、libPreCompiled libLinkOnly);buildinfo.addincludepaths(fullfile(pwd,'mkl''赢''包括'));buildInfo.addDefines ('-dmkl_ilp64');结尾函数headerName = getHeaderFilename('mkl_cblas.h'结尾函数inttypename = getblasinttypename()inttypename =“MKL_INT”结尾结尾结尾

使用这个示例类作为编写自己的BLAS回调类的模板。

如果您正在使用不同的BLAS库,请进行替换'mkl_cblas.h'使用您的CBLAS头文件的名称。

如果您正在使用不同的BLAS库,请进行替换“MKL_INT”使用CBLAS整数数据类型的名称。

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

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

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

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

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

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

函数doublecomplextypename = getblasdoublecomplextypename()doublecomplextypename =“my_double_complex_type”结尾

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

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

函数singleComplexTypeName = getBLASSingleComplexTypeName() doubleComplexTypeName ='my_single_complex_type'结尾

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

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

函数p = useEnumNameRatherThanTypedef() p = true;结尾

这个示例是BLAS回调类的一个实现OpenBlascallback.链接到森林图书馆在Linux上®平台。OpenBlascallback.没有明确的实现getBLASDoubleComplexTypeNamegetbrassinglecoMplextypename.,Underenumnameratherthantypedef..它继承了这些方法Coder.Blascallback.

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

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

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

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

在R2018B中介绍