質問

ようにビデオコーデックのためのOMAP3430.すでにコードをC++で記述され、改造してみてはいかがでしょうか/ポートの一部で活用してDSP(SDK(OMAP ZOOM3430SDK)によっては追加のDSP).

またポートの小さなループには非常に少量のデータ(~250バイト)、2M程度の異なるデータです。その過負荷からの通信とCPU、DSP以外にもゲしている場合は除く。

っているものと推察されるタスクのように最適化コードのためには,GPU搭載の通常のコンピュータ私の質問は、移植どのような部分は有益?どのようなGPUプログラマのような作業?

編集:

  1. GPP申請を割り当ててバッファのサイズ0x1000バイトまでとなります。
  2. GPP応募を呼び出しDSPProcessor_ReserveMemory予約DSPの仮想アドレス空間毎に割り当てをバッファを使用されるサイズ4K以上に割り当てられたバッファを自動ページにアライメントを実施します。総予約のスループットバッファのサイズのものについては、4Kページの境界線。
  3. GPP応募を呼び出しDSPProcessor_Mapマ毎に割り当てるバッファのDSPの仮想アドレス空間の予約前ます。
  4. GPP申請の準備をしにメッセージ通知のDSP実行段階にベースアドレスの仮想アドレス空間は、マップされるバッファを割り当てのGPP.GPPを使用しDSPNode_PutMessageを送信するメッセージのDSP.
  5. GPPソッドを呼び出しmemcpyをコピーするデータに加工した共有メモリ。
  6. GPP応募を呼び出しDSPProcessor_FlushMemoryるためのデータキャッシュはフラッシュされます。
  7. GPP申請の準備をしにメッセージ通知のDSP実行段階で完成への書き込みバッファのDSPしても、仮にそうでなかった場合にアクセスバッファです。メッセージも含量のデータ書き込まれるように、バッファのDSPまかくのデータをコピーします。のGPPに使DSPNode_PutMessageを送信するメッセージのDSPおよびそれを呼び出しDSPNode_GetMessage待ちメッセージを聞くメのDSP.

これらの実行のDSPプログラムが始まり、DSPを通知しGPPのメッセージがる仕上がりとなっている。っているのかどうかは置いておいて処理のDSPです。いで送信"処理が終了したメッセージのGPP.このものを大量に消費します。これはすでに内部/外部メモリ使用量、それともただの通過負荷?

役に立ちましたか?

解決 3

からの測定かったので、メールサイクルの間にCPU、DSP約160us.わからないのかということのできるようになるため、そのカーネルを使っていた橋のドライバ;しかし、これは非常に長い時間を簡単に前後しています。

いようであるポートのためのアルゴリズムのDSPの場合は計算負荷と同程度の所要時間のメール;そのアルゴリズムに適しての同時のようなコンピューティングCPU、DSP.

他のヒント

OMAP3430にはオンボードDSPがなく、システムバスにフックされたIVA2 +ビデオ/オーディオデコードエンジンがあり、CortexコアにはDSPのようなSIMD命令があります。 OMAP3430のGPUは、PowerVR SGXベースのユニットです。プログラマブルシェーダーはありますが、CUDAまたはOpenCLを使用した汎用プログラミングのサポートはないと思います。私は間違っている可能性がありますが、そのようなサポートを聞いたことはありません

搭載されているIVA2 +エンコード/デコードエンジンを使用している場合、このユニットに適切なライブラリを使用する必要があり、私が知っている特定のコーデックのみをサポートします。このモジュールに独自のライブラリを作成しようとしていますか?

Cortexの組み込みDSPish(SIMD命令)を使用している場合は、コードを投稿してください。

開発ボードに追加のDSPが搭載されている場合、DSPとは何か、OMAPにどのように接続されているのですか?

デスクトップGPUの質問に関しては、ビデオデコードの場合、ベンダーが提供する関数ライブラリを使用してハードウェアを呼び出します。LinuxのNvidia向けVDAPU、Windowsの同様のライブラリ(PureViewHDと呼ばれると思います)。 ATIには、オンボードデコードエンジン用のLinuxとWindowsの両方のライブラリもあります。名前はわかりません。

データを転送する際のタイムベースはわかりませんが、SDKのスペックシートに記載されているTMS32064xには非常に強力なDMAエンジンが搭載されていることがわかります。 (元のZOOM OMAP34X MDKであると想定しています。64xxが搭載されていると述べています。)OMAPに類似したものがあることを願って、それらを最大限に活用します。 <!> quot; ping-pong <!> quot;を設定することをお勧めします。 64xxの内部RAMにあるバッファ、およびDMAによる転送ハンドルでSDRAMを共有メモリとして使用します。外部RAMは6xxxシリーズのパーツのボトルネックになるため、パフォーマンスを改善するために内部メモリにロックできるものは何でも保持します。通常、これらのパーツは、内部メモリに格納されると、8個の32ビットワードをプロセッサコアにバスする機能を持ちますが、ダイレクトアクセスRAMとしてマップできるキャッシュのレベルに応じてパーツごとに異なります。 TIのコストに敏感な部品は、<!> quot; mappable memory <!> quot;を移動します。他のチップのいくつかよりも遠く。また、パーツのすべてのマニュアルはTIからPDFで無料でダウンロードできます。 TMS320C6000 CPUおよびInstruction Setのマニュアルや他の多くの書籍を無料でハードコピーも提供してくれました。

プログラミングに関する限り、いくつかの<!> quot; processor組み込み関数<!> quot;を使用する必要があるかもしれません。またはインラインアセンブリを使用して、実行中の数学を最適化します。 64xxでは、浮動小数点コアが組み込まれていないため、可能な場合は整数演算を優先します。 (これらは67xxシリーズにあります。)実行単位を見て、1つのサイクルで発生する可能性のある方法で異なる部分が異なる操作をターゲットとするように計算をマッピングできる場合、最高のパフォーマンスを達成できます。それらの部品の。命令セットのマニュアルには、各実行ユニットによって実行される操作のタイプがリストされています。計算を二重のデータフローセットに分割し、ループを少しほどくことができる場合、コンパイラは<!> quot; nicer <!> quot;完全な最適化がオンのときにあなたに。これは、プロセッサが左右に分かれており、どちらの側にもほぼ同じ実行ユニットがあるためです。

これが役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top