主要内容

coder.loop.parallelize

禁用自动并行化循环

    描述

    例子

    coder.loop.parallelize(“不”)控件的自动并行化循环放置在它的后面。这种实用主义压倒了EnableAutoParallelization配置设置。

    此实用程序支持显式金宝app循环。有关显式循环和隐式循环的更多信息,请参见隐式for循环

    例子

    全部折叠

    这个示例演示如何禁用特定的自动并行化在MATLAB中循环®通过使用coder.loop.parallelize(“不”)指令。

    定义MATLAB函数autoparExample

    函数[x, y] = autoareexample (x, y)% # codegenX = X * 17;% Pragma禁用for循环的自动并行化coder.loop.parallelize (“永远”);I = 10:numel(x) y(I) =√(y(I));结束结束

    这个函数包含两个循环:

    • mtimes(矩阵乘法)函数包含一个隐式遍历矩阵元素的循环x

    • 显式循环,计算矩阵元素子集的平方根y.的coder.loop.parallelize(“不”)指令禁用此循环的自动并行化。

    为静态库创建代码生成配置对象。设置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]);} }

    扩展功能

    C / c++代码生成
    使用MATLAB®Coder™生成C和c++代码。

    GPU的代码生成
    使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

    介绍了R2021a