文档帮助中心文档
为
禁用自动并行化为循环
coder.loop.parallelize(“不”)
例子
coder.loop.parallelize(“不”)控件的自动并行化为循环放置在它的后面。这种实用主义压倒了EnableAutoParallelization配置设置。
EnableAutoParallelization
此实用程序支持显式金宝app为循环。有关显式循环和隐式循环的更多信息,请参见隐式for循环.
全部折叠
这个示例演示如何禁用特定的自动并行化为在MATLAB中循环®通过使用coder.loop.parallelize(“不”)指令。
定义MATLAB函数autoparExample:
autoparExample
函数[x, y] = autoareexample (x, y)% # codegenX = X * 17;% Pragma禁用for循环的自动并行化coder.loop.parallelize (“永远”);为I = 10:numel(x) y(I) =√(y(I));结束结束
这个函数包含两个循环:
的mtimes(矩阵乘法)函数包含一个隐式为遍历矩阵元素的循环x.
mtimes
x
显式为循环,计算矩阵元素子集的平方根y.的coder.loop.parallelize(“不”)指令禁用此循环的自动并行化。
y
为静态库创建代码生成配置对象。设置EnableAutoParallelization财产真正的.将输入类型指定为双精度浮点数的1 × 2000行向量并生成代码。
真正的
cfg = coder.config (“自由”);cfg。EnableAutoParallelization = 1;codegen配置cfgautoparExamplearg游戏{兰特(2000)兰德(2000)}报告
代码生成成功:查看报告
打开代码生成报告并检查生成的结果autoparExample功能:
生成的代码包含一个乘法操作的并行循环。
显式为在生成的代码中,循环被转换为串行循环。在这个循环之前有coder.loop.parallelize(“不”)指令的MATLAB代码。代码生成器没有并行化它。
void autoareexample (double x[2000], double y[2000]) {int b_i;int我;if (! isinitialized_autopareexample) {autoparExample_initialize();}#pragma omp parallel for num_threads(omp_get_max_threads()) private(i)For (i = 0;我< 2000;I ++) {x[I] *= 17.0;} /*禁用for循环的自动并行化*/ for (b_i = 0;b_i < 1991;B_i ++) {y[B_i + 9] =根号(y[B_i + 9]);} }
parfor|coder.config|编码器。MexCodeConfig|编码器。CodeConfig|编码器。EmbeddedCodeConfig
parfor
coder.config
编码器。MexCodeConfig
编码器。CodeConfig
编码器。EmbeddedCodeConfig
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系
得到审判现在