主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

系统对象,MATLAB编码器および并行计算工具箱を使用したシミュレーションの高速化

MATLAB®の通信アルゴリズムシミュレーションを高速するのシミュレーションは说しし。具体的には,系统对象,MATLAB〖c〗生成,およびmatlab相关parを使用した並列処理実行がシミュレーション速度に与える効果を示します。

これらの方法を組み合わせると,通常のシミュレーション時間を桁違いに短縮できる場合があります。この違いは,シミュレーションを一晩中実行するか,数時間で終わるかの違いになります。

このこのでで上げる系统对象は,通讯工具箱™制品で利用できます。このこの例matlabからコードを生成するを実するは,MATLAB编码器™ののが必要です。実行するは,并行计算工具箱™のライセンスがです。

はじめに

この例では,以下の送受信システムのさまざまな実装を調べます。

このこのは,送信机,チャネルチャネル,およびおよび信机构で成ささててます。噪声机は,入力ビットストリーム畳み込み号化器材,インターリーバー,変调ビットを畳み込みおよび空,空间时空ブロック号化器材で致理性[1]、[2]。诚信さされ信号はに2x2mimoチャネルチャネル加法性ホワイトガウス(awgn)チャネル受ガウスガウスされます。诚信机はは力信号をます。受信はは力信号を2x2mimo空间时间空间尺号化器,复调,デインターリーバー,およびビタビ复号化器で处理し,入力ビットストリームの最良推定値を受信机で复元します。

例の構造

この例のワークフローは以下のとおりです。

  1. 基本となる関数ベースのアルゴリズムから始める

  2. MatlabプロファイラーGuiを使使用した速度ボトルネックの特价

  3. System对象を使用したたシミュレーションシミュレーションシミュレーションシミュレーションの上

  4. Matlab〖cコード生成によるシミュレーション高高化

  5. 並列処理実行を使用した高速シミュレーションの達成

基本となる関数ベースのアルゴリズムから始める

このアルゴリズムの初版である,基本の実装を表す関数から始めます。关节有关部CommAccelerationBaseline.への入力は、現在のフレームの Eb/No 値 (EbNo) とアルゴリズムが処理するビットの数 (MaxNumBits) です。Eb/No は、ビットあたりのエネルギーとノイズ パワー スペクトル密度の比です。関数の出力は、アルゴリズムのビット誤り率 (BER) です。基本アルゴリズムの実装では、localmimoencoder、localmimodecoder、localmimochannel などのユーザー定義の関数と共に、Communications Toolbox の関数とデータ オブジェクトが使用されます。

类型CommAccelerationBaseline.

始点として,matlabでこの基本アルゴリズム実行するのに要する要するするするのに要する要するをます.matlab时间关联(ticおよびtoc)を使使,关关数0〜7 dbのbeb/ no値反复するで呼び出されたときに关键有关部の実行

maxsnrdb = 7; eBno = 1; maxnumbits = 2e5;n = 1; str =“基线”;CommaCcelerationBaseline(EBNO,1E4);Berbaseline = Zeros(大小(0:maxsnrdb));FPRINTF(1,'处理基线算法。\ n');Tic;为了EBNO = 0:maxsnrdb y = commaccelerationbaseline(ebno,maxnumbits);Berbaseline(EBNO + 1)= Y;结尾a = toc;

結果は基本アルゴリズムのシミュレーション時間(秒単位)を示します。この測定値を基準として使用して,アルゴリズムの後続バージョンと比較します。

commaccelerationreportresults (N, a, a, str);

MatlabプロファイラーGuiを使使用した速度ボトルネックの特价

MATLABプロファイラープロファイラーを使使,基本アルゴリズムアルゴリズムの定理ボトルネックと问题ををしします情次次のスクリプトスクリプトをて取得しし

轮廓Y = CommaCcelerationBaseline(EBNO,1E5);轮廓

プロファイラーレポートには,アルゴリズムの関数呼び出しごとの実行時間が降順で示されます。プロファイラーウィンドウに表示されている最初のいくつかの関数は,アルゴリズムの速度ボトルネックを表します。この場合2つのユーザー定義の関数(localmimodecoderとlocalmimochannel)および関数vitdec(工具箱のビタビ復号化器関数)が主要な速度ボトルネックとして特定されます。

System对象を使用したたシミュレーションシミュレーションシミュレーションシミュレーションの上

関数commaccelerationsystemobjectsは、通信工具箱の系统对象を使用する,第2版アルゴリズムを実装します。このアルゴリズムのベースラインバージョンにある10の関数呼び出しのうち9つが,使用可能な系统对象の対応する呼び出しで置き換えられます。その結果,関数commaccelerationsystemobjectsは次の2つの異なる部分で構成されます。

  • 系统对象を作成する宣言部分

  • 特定の工程を実行するために系统对象™ごとに一步メソッドを呼び出す実行部分。

类型commaccelerationsystemobjects

このバージョンしますますと同じ前と同じ关键问题

n = 2;str =使用系统对象的;CommAccelerationsystemObjects(EBNO,1E4);bersystemobject = zeros(大小(berbaseline));FPRINTF(1,'处理算法的System对象版本。\n');Tic;为了eBno = 0:maxsnrdb y = commaccelerationsystemobjects(eBno,maxnumbits);BersystemObject(EBNO + 1)= Y;结尾b = toc;

结果はアルゴリズムの系统对象バージョンのシミュレーション时空を示します。关键词呼び出しを系统对象の呼び出しで置き换えると,アルゴリズムがより高度で実されるに注目して.ssystem object〗を使する利。は效率性であるため,これは予想されてた动词です。系统对象をを使をアルゴリズム宣言を実と区别しししししししししししししししししししししししし。されます.System对象をを使するアルゴリズムアルゴリズム装装では,パラメーターパラメーターの定理ととアルゴリズム実ががだけのの外侧でさののでれれ,系统对象の效果的なmex衣服が活活れて,シミュレーションの性能全全れててさます。

commaccelerationreportresults(n,a,b,str);

Matlab〖cコード生成によるシミュレーション高高化

Matlab编码器は,matlabコード生成サブセットのであるアルゴリズムから,移植と判読が可な第コード生成します。第2版本アルゴリズム关键词。第2版本アルゴリズム关有关部逗号では,MATLAB编码器でで生成をする系统对象をを用します,このアルゴリズムをmex(Matlab実行をMex(Matlab実をファイルMex关键词としてMatlabににコンパイルすることもリンクことこともできますmリンクすることもできますますmするののもコマンドますをののコマンドコマンドを使してててててててててををMEX关联(CommAccelerationSystemObjects_mexとと呼ばれているいるコンパイルしし

メモ:例のこのセクションを実行するには,MATLAB编码器ライセンスが必要です。

Codegen('commaccelerationsystemobjects.m''-args',{eBno,maxnumbits})

Mexバージョンのアルゴリズムのシミュレーションシミュレーション测定ます。前前とforループループ同じ关键词关键

n = 3;str =MATLAB到C的代码生成;commaccelerationsystemobjects_mex (EbNo 1 e4);berCodegen = 0(大小(berBaseline));FPRINTF(1,'处理第二版算法的MEX函数。\n');Tic;为了EbNo = 0: MaxSNRdB y = commaccelerationsystemobjects_mex (EbNo MaxNumBits);berCodegen (EbNo + 1) = y;结尾c = toc;

結果はアルゴリズムの墨西哥人バージョンのシミュレーション時間を示します。系统对象アルゴリズムを MEX 関数にコンパイルすることによって、アルゴリズムの MEX バージョンは、アルゴリズムが第 2 バージョンおよびベースライン バージョンのものよりも高速で実行されることに注目してください。MATLAB からの C コード生成を使用する利点の 1 つはシミュレーションの高速化であるため、これは予想されていた動作です。System object を使用するアルゴリズムは高度に最適化されていますが、コード生成は、関数内の変数のサイズとデータ型を整理することによってシミュレーションを高速化できます。この処理によって、コードのすべての行でサイズとデータ型を調べるインタープリター言語のオーバーヘッドが取り除かれるため、実行がより効率的になります。

commaCcelerationReportresults(n,a,c,str);

並列処理実行を使用した高速シミュレーションの達成

タスクを並列で実行することによって,複数のコアを利用してシミュレーションを高速化します。MATLABで並列処理実行(parループ)を使用して,使用可能なワーカー数で作業を実行します。并行计算工具箱を使用すると、シミュレーションを異なる反復回数で並列化して実行できます。関数parpool.を使用し,后続のparループループ実行するににののmatlabワーカーを予约します。

メモ:例のこのセクションを実行するには,并行计算工具箱のライセンスが必要です。

如果isempty (gcp (“nocreate”parpool));结尾

前の例で使用されている为ループではなく,parループ内で実行されるMEXバージョンのアルゴリズムのシミュレーション时间を测定します。

N = 4;str =“并行模拟与Parcor”运行;commaccelerationsystemobjects_mex (EbNo 1 e4);Berpct =零(大小(Berbaseline));FPRINTF(1,'在parfor循环中处理第二版算法的MEX函数。\n');Tic;parEbNo = 0: MaxSNRdB y = commaccelerationsystemobjects_mex (EbNo MaxNumBits);berpct(eBno + 1)= y;结尾d = toc;

结果はparループ内で実行される墨西哥人バージョンの2番目のアルゴリズムのシミュレーション時間を示します。parループ内でこのバージョンを実行することによって,シミュレーションの性能が最速になります。parループの基本概念は,標準的なMATLABの为ループと同じです。違いは,parは各ワーカーが全反复反复うちののををするにににに,ループの反复をグループに点点です。parループは同様的のループよりも非常に優れた性能を提供します。

commaCcelerationReportresults(n,a,d,str);

まとめ

以下の法をを合并せることで,

  • 系统对象

  • matlabからのcコード生成

  • 並行処理実行

通讯アルゴリズムアルゴリズムシミュレーションシミュレーション大厦に高度化。

  • 系统对象は実行ループの外側でパラメーターの処理と初期化を1回だけ実行し,系统对象の効率的な墨西哥人実装を利用し,関数ベースのアルゴリズムにある入力検証および確認のルーチンの繰り返しを避けることによって,シミュレーションの速度を向上させます。

  • MATLAB〖c〗生成は,すべての変のデータデータとサイズを整,コードの各行

  • 并列致理性行は,多重の使用可能なmatlabワーカーでアルゴリズムのな反复を时に计算によってによってによってによってによってによって,シミュレーションシミュレーション大厦に高度化。

その他の调查

このこの例で,关节parpool.をを使ししmatlabクライアントマシンをローカルに実する多数のmatlabワーカーワーカーを予约しますしますます。并列并列设定を変更,matlabクライアントマシン上には存しワーカーの大厦クラスターアルゴリズムアルゴリズム実行さらに高度化できます并列并列助剂配方と使用法のの详细,并行计算工具箱用户指南“「双行编程与用户配置编程」「│││││││││

数量性能に关键词

この例では,ベースラインバージョンと系统对象バージョンのアルゴリズムとは数値的に同一ではありません。基本アルゴリズムで使用されるユーザー定義関数localmimodecoderは,第2バージョンのアルゴリズムのcomm.OSTBCCombiner系统对象で使用されるものと若干異なるバージョンのMIMO空間時間ブロック復号化演算を実装しています。しかしながら,最初の3つのバージョンのアルゴリズム(ベースラインバージョン,系统对象バージョンおよび第2バージョンの墨西哥人関数)を,それぞれ十分な入力ビット数で実行した場合には,非常に似た误码率曲線が得られます。これらの曲線は,異なるバージョンのアルゴリズムについて同じような数値性能を示します。ここでは,入力ビット数が1000年万に設定された(つまり,MaxNumBits = 1 e7) 3つのバージョンのアルゴリズムをそれぞれ実行して得られる误码率曲線を示します。

付録

この例では以下の関数が使用されています。

参考文献

  1. S. M. Alamouti,“无线通信简单传输分集技术”IEEE®通信选定领域期刊,第16卷,第5期。8、1998年10月第1451-1458页。

  2. V. Tarokh, H. Jafarkhami, A. R. Calderbank,《来自正交设计的时空块代码》,信息理论上的IEEE交易,卷。45,不。5,PP。1999年7月1456-1467。