2013-10-12 4 views
9

私はマルチコアマシン上でparalleアルゴリズムのパフォーマンスに取り組んでいます。私は、ループの並べ替え(ikj)テクニックを使った行列乗算の実験を行った。L2データと命令キャッシュが突然減少しました

シリアル実行の結果は、以下の画像と同じです。ループ順序ikjのためのL1データキャッシュ、nXn行列のすべてのサイズに対するkijは100%に近い値です(画像1ボックス番号1 & 2) ikjのサイズは2048と4096であり、L2データキャッシュは%50(画像2ボックス番号1 & 2)だけ減少し、L2命令キャッシュでも同じことが当てはまります。これらの2つのサイズのL1データキャッシュが他のサイズ(256,512,1024)とほぼ同じような場合のIncaseは、約%100です。私は命令とデータのキャッシュヒットの両方でこの勾配のための何らかの共振可能な理由を見つけることができませんでした。どのように私は理由(単数または複数)を見つけるために手がかりを与えることができますか?

L2統合キャッシュは問題を悪化させることに何らかの影響を与えると思いますか?しかし、何が原因でアルゴリズムやパフォーマンスの特性がプロファイルされるべきなのか、この削減の原因は何か。

実験機は、OSは-oなしコンパイラの最適化が

要約版&コンプリート質問GCC 4.7でのFedora 17のx64で、2MバイトのL2キャッシュ、キャッシュライン64とのIntel E4500のですか? my problem is that why sudden decrease of about 50% in both L2 data and instruction cache happens in only ikj & kij algorithm as it's boxed and numbered 1 & 2 in images, but not in other loop variation

        *Image 1* 

enter image description here

        *Image 2* 

enter image description here

        *Image 3* 

enter image description here

        *Image 4* 

enter image description here

上記の問題にもかかわらず、ikj &kijアルゴリズムのタイミングの増加はありません。しかし、他のものよりも速いです。 enter image description here

IKJとKIJアルゴリズムループの2つのバリエーションは、アルゴリズム

For (i=0;i<n;i++) 
    For(k=0;k<n;k++){ 
     r=A[i][k]; 
     For (j=0;j<n;j++) 
      C[i][j]+=r*B[k][j] 
    } 

IKJ技術/

KIJアルゴリズム

For (k=0;k<n;k++) 
    For(i=0;i<n;i++){ 
     r=A[i][k]; 
     For (j=0;j<n;j++) 
      C[i][j]+=r*B[k][j] 
    } 

を並べ替えている私がいるため、この問題が発生した賭けのおかげ

+0

これは不可能です。ループはL1命令キャッシュに簡単に収まるため、L2命令のヒット率が低下することはありません。あなたのプロファイラはボルケーキでなければならず、あまりにも頻繁に先取りされるスレッドの副作用を測定しています。 –

+0

@hansループは命令キャッシュに収まるとはどういう意味ですか?また、私は並列命令を実行しました。また、L1命令のバリエーションもあり、L2命令でもヒットしました.ikjとkijアルゴリズムのボックス1と2の間違いです! – mjr

+0

1レベルのブロッキングでプロファイリングを実行しましたが、このバリエーションは見られませんでしたので、今私は混乱しています! – mjr

答えて

4

のER-アライメント問題は、次の質問の答えで議論:

私は私がそれらから&ペーストをコピーして好きではないことを理解できることを望みます答え。

+0

@villekullaに感謝しています。 ikj&kijアルゴリズムでは、L2データと命令キャッシュの両方で1と2のボクシングとナンバリングが行われますが、他のループのバリエーションでは発生しません。L2のミスに加えて、前述の(ikj&kij)キャッシュにはシリアルとパラレルの両方のバージョンでタイミングの問題はありませんが、データへのアクセス方法やロード、ストア、およびミスが少ないため、処理が速くなります。 – mjr

+0

これを追加する必要があります。これは、ブロッキングファクタ(BF)やサイズに見られないようなパターンをikjオーダーで使用した場合です。確かにBFの間にばらつきがあった。 – mjr

関連する問題