Use MATLAB Coder to convert matlab code to mex without using multi-threading

My code is as follows
function all_Spins = simulate_particles(num_particles, num_steps, all_Spins, SpinLocOri, Gamma, magnetic_field, GdAmp, StepT, spherePositions, sphereRadii, Lx_intra, Ly_intra, Lz_intra, penetration, Lx_extra, Ly_extra, Lz_extra)
parfor mun = 1:num_particles
particle = all_Spins(mun, :);
particle = simulate_particle_motion(num_steps, particle, SpinLocOri, Gamma, magnetic_field, GdAmp, StepT, spherePositions, sphereRadii, mun, Lx_intra, Ly_intra, Lz_intra, penetration, Lx_extra, Ly_extra, Lz_extra);
all_Spins(mun, :) = particle;
end
end
After using MATLAB Coder to convert to mex, I found that multi-threading was not used and my cpu was idle.

回答 (2 件)

Infinite_king
Infinite_king 2024 年 3 月 26 日
編集済み: Infinite_king 2024 年 3 月 26 日
Hi 梅花,
By default, MATLAB Coder generates code in which the parfor loop body runs in parallel using OpenMP.
In the code generation configuration object, you can enable 'OpenMP' as follows,
cfg = coder.config('mex');
cfg.EnableOpenMP = true;
% generate code
codegen myFunction -config cfg
For more information, refer the following resources,
Hope this is helpful.

カテゴリ

ヘルプ センター および File ExchangeMATLAB Coder についてさらに検索

製品

リリース

R2020b

タグ

質問済み:

2024 年 3 月 26 日

編集済み:

2024 年 3 月 26 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by