3

Intel の TBB を使用して並列化を開始したシリアル コードがいくつかあります。私の最初の目的は、コード内のほぼすべての for ループを並列化することでした (for ループ内で for を並列化することさえありました)。現在、それを実行してスピードアップを実現しています。並列化する場所/アイデア/オプションをさらに探しています...問題についてあまり言及していないと、これは少し曖昧に聞こえるかもしれませんが、コードで調査できる一般的なアイデアをここで探しています。

アルゴの概要 (次のアルゴは、画像のすべてのレベルで実行され、最短から始まり、実際の高さと幅に達するまで、幅と高さが 2 ずつ増加します)。

For all image pairs starting with the smallest pair
    For height = 2 to image_height - 2
        Create a 5 by image_width ROI of both left and right images.
        For width = 2 to image_width - 2
            Create a 5 by 5 window of the left ROI centered around width and find best match in the right ROI using NCC
            Create a 5 by 5 window of the right ROI centered around width and find best match in the left ROI using NCC
            Disparity = current_width - best match
    The edge pixels that did not receive a disparity gets the disparity of its neighbors
    For height = 0 to image_height
        For width = 0 to image_width
            Check smoothness, uniqueness and order constraints*(parallelized separately)
    For height = 0 to image_height
        For width = 0 to image_width
            For disparity that failed constraints, use the average disparity of
            neighbors that passed the constraints
    Normalize all disparity and output to screen
4

2 に答える 2

0

ばかげた答えは、時間がかかるものや反復的なものです。私は Microsoft の .NET v4.0 Task Parallel Library を使用していますが、そのセットアップで興味深い点の 1 つは、その「表現された並列処理」です。「試みられた並列処理」を表す興味深い用語です。ただし、ホスト プラットフォームに必要なコアがない場合、コーディング ステートメントに「ここで TPL を使用する」と記載されている可能性があります。

すべてのプロジェクトで TPL を使い始めました。特にループがある場所 (これには、ループの反復間に依存関係がないようにクラスとメソッドを設計する必要があります)。しかし、古き良き時代のマルチスレッド コードだった可能性のある場所はすべて、別のコアに配置できるかどうかを確認します。

これまでのところ、私のお気に入りは、ページのコンテンツを分析するために ~7,800 の異なる URL をダウンロードするアプリケーションであり、探している情報が見つかった場合は追加の処理を行います....これには 26 ~ 29 分かかりました。完了します。デュアル クアッド コア Xeon 3GHz プロセッサ、24 GB の RAM、および Windows 7 Ultimate 64 ビット エディションを搭載した私の Dell T7500 ワークステーションは、約 5 分ですべてを処理します。私にとって大きな違いです。

また、TPL を利用するためにリファクタリングしているパブリッシュ/サブスクライブ通信エンジンもあります (特に、サーバーからクライアントへの「プッシュ」データについて...特定の事柄に関心を示しているクライアント コンピューターが 10,000 台ある場合があります。そのイベントが発生したら、それらすべてにデータをプッシュする必要があります)。私はまだこれを行っていませんが、この結果を見るのを本当に楽しみにしています.

思考の糧 ...

于 2011-04-08T02:43:25.940 に答える