文档

coder.fftw.StandaloneFFTW3Interface.lock

类:coder.fftw.StandaloneFFTW3Interface
包:coder.fftw

锁定对FFTW规划的访问

语法

coder.fftw.StandaloneFFTW3Interface.lock ()

描述

coder.fftw.StandaloneFFTW3Interface.lock ()锁定对生成的独立代码中FFTW库调用的规划过程的访问。

当多个线程调用FFTW库时,在派生的FFT库回调类中实现此方法coder.fftw.StandaloneFFTW3Interface

例子

全部展开

派生的类coder.fft.StandaloneFFTW3Interface、实现解锁调用C代码来管理锁的方法。

编写初始化、设置和取消设置锁的C函数。为了管理锁,本例使用OpenMP库。对于不同的库,请相应地修改代码。

  • 创建文件mylock.c包含以下C代码:

    #include "mylock.h" #include " omp_nest_lock_t lockVar;void mylock_initialize(void) {omp_init_nest_lock(&lockVar);}无效mylock(无效){omp_set_nest_lock(&lockVar);}无效myunlock(无效){omp_unset_nest_lock(&lockVar);}

  • 创建头文件mylock.h包含:

    #定义MYLOCK_H void mylock_initialize(void);空白mylock(无效);空白myunlock(无效);# endif

编写一个FFT回调类myfftcb:

  • 指定FFTW库。

  • 实现了解锁方法,调用支持的C代码来控制对FFTW规划的万博1manbetx访问。

使用这个类作为模板。取代fftwLocation您的FFTW库安装的位置。

classdefmyfftcb < coder. fftw3 . standalone efftw3 interface方法(静态)函数th = getNumThreads coder.inline“总是”);Th = int32(coder.const(1));结束函数锁()coder.cinclude (“mylock.h”“InAllSourceFiles”,真正的);coder.inline (“总是”);coder.ceval (“mylock”);结束函数解锁()coder.cinclude (“mylock.h”“InAllSourceFiles”,真正的);coder.inline (“总是”);coder.ceval (“myunlock”);结束函数updateBuildInfo(buildInfo, ctx) fftwLocation =“\ usr \ lib \ fftw”;includePath = fullfile(fftwLocation,“包括”);buildInfo.addIncludePaths (includePath);libPath = fullfile(fftwLocation,“自由”);%的两倍libName1 =“libfftw3-3”;[~, libeext] = ctx.getStdLibInfo();libName1 = [libName1 libeext];addLinkObjects(buildInfo, libName1, libPath, 1000, true, true);%的单libName2 =“libfftw3f-3”;[~, libeext] = ctx.getStdLibInfo();libName2 = [libName2];addLinkObjects(buildInfo, libName2, libPath, 1000, true, true);结束结束结束

设置代码生成配置参数。

  • 来生成代码MATLAB®编码器™codegen命令,设置:

    • CustomFFTCallback“myfftcb”

    • CustomSource“mylock.c”

    • CustomInitializer“mylock_initialize();”

  • 来生成代码MATLAB编码器应用程序设置:

    • 自定义FFT库回调myfftcb

    • 其他源文件mylock.c

    • 初始化函数mylock_initialize ();

  • 的代码生成MATLAB函数使用万博1manbetx®编码器,设置以下参数:

    • 自定义FFT库回调myfftcb

    • 代码生成>自定义代码下,其他构建信息,设置源文件mylock.c

    • 代码生成>自定义代码下,在生成中插入自定义C代码,设置初始化函数mylock_initialize ();

生成的代码。

在R2017b中引入

这个话题有帮助吗?