トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Thread
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ 並列化


  POINT
    何を並列にすべきか考える

     Data を並列にわけて処理をする
     全体の処理を 小さな処理にわけて処理をする

    といったように 分ける対象の選ぶところから始まる
___

■ Data.の並列化

SAMPLE 画像変換の並列処理 DESC 処理する対象データを 小分けして処理を並列にする 画像のピクセル単位の処理が分りやすい例。 各ピクセルデータ間には依存関係がないため並列して処理ができる。
    // 画像をモノクロに変換する
    
    void funcTrd( void *ptr )
    {
        Data *w = (Data *)ptr;
        unsigned int i;
        unsigned char y;

        /* 
           WARNING
            1. unsigned でないと問題あり. 
            char *p = 0000 = 255 = 0x00010000
        */
        unsigned char *p = (unsigned char *)(w->data);
        //char *p = (char *)(w->data);

        for( i=0; i< w->nr; i++ ){
          y = 0.299f * (int)(p[2])
            + 0.587f * (int)(p[1])
            + 0.114f * (int)(p[0]);

          p[0] = p[1] = p[2] = y;
          p += sizeof(char) * 4;
        } 
      }

    int main( void )
    {
      int i, nr;
      HANDLE trd[NRTRD];
      Data w[NRTRD];
      image_w img;

      // 画像の読み込み
      loadBmp( "test.bmp", &img );


      nr = ( (img.w * img.h ) + (NRTRD - 1) ) / NRTRD;

      for( i=0; i< NRTRD; i++ ){

        w[i].id = i;
        w[i].nr = nr;
        w[i].data = ( (char*)(img.data) 
                      + i*nr*(sizeof(char)*4)
                      );

        // 残り Pixel の調整
        if ( i == NRTRD - 1) {
          w[i].nr = (img.w * img.h) - nr*(NRTRD-1);
        }

        // Thread を作成して小分けしたデータを渡す
        trd[i] = CreateThread( 0, 0, 
                               (LPTHREAD_START_ROUTINE)funcTrd, 
                               &(w[i]), 0, 0 );
      } 

      WaitForMultipleObjects( NRTRD, trd, 1, INFINITE );

      /* 画像の出力 */
      writeBmp("test_mono.bmp", &img );
      return 0;
    }








金利比較.COM
NINJAIDX 14