このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。
并行计算工具箱ををたたシミュレーションの化化
平行计算工具箱™このででななななななななななな(ber)シミュレーション(ber)シミュレーションシミュレーションシミュレーションシミュレーションを高速高速高速化,,,,Qpsk Qpsk Qpsk qpsk Qpsk Qpsk Qpsk Qpsk Qpsk Qpsk QpskQpsk复调器
シミュレーションパラメーター设定します。
EBNOVEC = 5:8;DB中的EB/NO值%TotalRerrors = 200;每个EB/no值所需的位错误数量%TotalBits = 1E7;%eb/no值传递的位总数
关数helper_qpsk_sim_with_awgn
によって生成データ格纳するために配列にメモリを割り当て。
[numErrors,numbits] = deal(zeros(length(ebnovec),1));
シミュレーション実行,时间を判别しますプロセッサプロセッサをををしつだけてて,,ラインラインライン性能性能をを见极见极めますます。のののののの
抽动为了idx = 1:长度(ebnovec)errorStats = helper_qpsk_sim_with_awgn(ebnovec,idx,...总计,总容量);numErrors(idx)= errorStats(idx,2);numbits(idx)= errorStats(idx,3);结尾simbaselinetime = toc;
berを计算ます。
ber1 = numErrors ./ numbits;
并行计算工具箱ががなの再び実行ます。ワーカーのプールを作成し。。。
pool = GCP;断言(〜Isempty(池),['无法创建并行池。'...“尝试使用'parpool''命令手动创建池。)))
使用“本地”配置文件开始并行池(PARPOOL)...连接到并行池(工人数量:6)。
使用可能ワーカーの数を水池
の数字工人
プロパティから。のメソッド最大へ改善が行われたのでので,,このシミュレーションででではは,それぞれそれぞれそれぞれそれぞれののワーカーワーカー点を割り当てる,値のをのワーカー実行します。
numworkers = pool.numworkers;
入れ子にさたparfor
ループで使用ためのEBNOVEC
の长决定ます。変数が分类されるよう,,parfor
に入れ子れるれるれる范囲は定数変数定义しておかばばなりなりんん。
lenebnovec =长度(EBNOVEC);
关数helper_qpsk_sim_with_awgn
によって生成データ格纳するために配列にメモリを割り当て。
[numErrors,numbits] = deal(Zeros(length(ebnovec),numworkers));
シミュレーションをし実行时间判别します。
抽动parforn = 1:数字工人为了idx = 1:lenebnovec errorstats = helper_qpsk_sim_with_awgn(ebnovec,idx,...Totalerrors/Numworker,TotalBits/Numworkers);numErrors(idx,n)= errorStats(idx,2);numbit(idx,n)= errorStats(idx,3);结尾结尾simparalleltime = toc;
berを计算。この,复数プロセッサの结果组み合わせ集计集计集计集计集计をを导き出さなければ
ber2 = sum(numErrors,2)./ sum(numbits,2);
ber値比较てワーカーのになく同じが得られることを确认し。。。
半学(EBNOVEC',BER1,' - *',ebnovec',ber2,' - ^') 传奇(“单个处理器”,,,,“多个处理器”,,,,'地点',,,,'最好的')xlabel('eb/no(db)')ylabel('ber') 网格
乱数の异なるので,,曲线どのでも基本にはは同じであるといういうことが。。
各メソッド実行时间比较します。
fprintf(['\ nsimulation Time =%4.1f sec for One Worker \ n',,,,...'仿真时间=%4.1f sec的多个工人\ n'],,...simbaselinetime,simparalleltime)fprintf('PARFOR =%d \ n'的处理器数量,数字工人)
仿真时间=一个工人模拟时间= 31.6秒=多个工人的处理器数量的9.6秒= 6