平行线为
循环
您必须使用支持开放多处理(OpenMP)应用程序接口的编译金宝app器。看到金宝app支持编译器.如果您使用的编译器不支持OpenMP,金宝appMATLAB编码器将parfor
循环,为
- 砍伐。在生成的MEX函数或C / C ++代码中,循环迭代在单个线程上运行。
OpenMP应用程序接口与JIT MEX编译不兼容。看到JIT汇编不支持OpenMP金宝app.
不要在内部使用以下构造parfor
- 砍伐:
不能使用。调用外部函数coder.extrinsic
在一个身体parfor
循环。
函数中的全局变量不能写入parfor
循环。
MATLAB编码器不支持的使用金宝app编码器.CEVAL.
在减少。例如,您不能生成以下代码parfor
循环:
parfory = code .ceval(“myCFcn”,义);结束
编码器.CEVAL.
调用这个函数parfor
循环。例如:parfori = 1:4 y = callmycfcn(y,i);结束功能y = callMyCFcn(y,i) y = code .ceval('mcyfcn', i);结束
你不能使用变长度输入宗量
或者varargout.
在parfor
- 砍伐。
循环索引的类型必须在目标硬件上用整数类型表示。在生成的代码中使用不需要多字类型的类型。
parfor
对于独立代码生成,需要工具链方法来构建可执行文件或库。不要更改导致代码生成器使用模板Makefile方法的设置。看到项目或配置正在使用模板生成文件.
有关限制的全面列表,请参见parfor限制.
使用一个parfor
循环时间:
您需要对一个简单的计算进行多次循环迭代。parfor
将循环迭代划分为组,以便每个线程可以执行一组迭代。
您有需要很长时间才能执行的循环迭代。
不要使用parfor
- 循环中的迭代取决于其他迭代的结果时。
减少是此规则的一个例外。一种减少变量累积一个值,该值依赖于所有的迭代,但与迭代顺序无关。
输入参数numthreads.
集OpenMPnum_threads ()
子句。OpenMP还支持通过设金宝app置环境变量来全局限制C/ c++中的线程数OMP_NUM_THREADS.
或者使用OMP_SET_NUM_THREADS()
.有关更多信息,请参阅OpenMP规范。https://www.openmp.org/specifications/