Use MATLAB Coder to convert matlab code to mex without using multi-threading
1 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
回答(2 个)
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,
Enabling/Disabling OpenMP - https://www.mathworks.com/help/coder/ug/control-compilation-of-parfor-loops.html
MATLAB Answer related to OpenMP support - https://www.mathworks.com/matlabcentral/answers/237411-can-i-make-use-of-openmp-in-my-matlab-mex-files?#answer_190619
Hope this is helpful.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Execution Speed 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!