Visual Studio2008でParallel FX Libraryによる並列化処理

y_takeuchi2008-11-24

ParallelExtensions_Jun08CTP.msiを落としてC#のプログラムでどの程度の効果が有るのか試してみた。

並列前
for (int i = 0; i < 100; i++) {
a[i] = a[i]*a[i];
}

並列後
Parallel.For(0, 100, delegate(int i) {
a[i] = a[i]*a[i];
});

データ数が100個ある1次元配列aを二乗するだけのもの。これはMSDNのサンプルコードで、自分で作成したお試しコードはもっと負荷がかかるようにしている。
結果は並列前の方が若干速い。予想は出来ていた事だが、並列作業に伴うロスと、Dualコアと言ってもOSの後ろで色々なサービスが稼動しているので、単純にCPUの数ほどの恩恵は受けられないのだろう。Phenom IIが出たらメインパソコンを組み直すので、その時また試してみたい。

ただ、このような並列プログラミングは速度を上げる事が難しいらしく、CUDAにしてもCPUの10倍とか言うけど、そこまで出来るには相当の腕が必要なようだ。