ページ 1 / 1
並列計算について
Posted: 2013年2月09日(土) 16:28
by 宮本
昨日の講義で2つの1次元配列の内積を求めるプログラムを作ったのですが、応用として、各スレッドで部分内積(sm)を求め、その部分内積を集計した内積(sum)を求められるプログラムを作り、OMPを用いて逐次と並列での速度比較をしてみなさいと言われました。(このプログラムを無理に用いる必要はないそうです…)
OpenMPについては、昨日初めてその存在を知り全くの知識不足で、どこをどのようにすれば並列化し、速度を求めればいいかわかりません。
長々とすみませんが、どなたかよろしければご教示ください。
コード:
#include<stdio.h>
double a[3]={ 1.0, 2.0, 3.0};
double b[3]={ 1.0, 2.0, 3.0};
int main(void)
{
int i;
double sum;
printf("a=(%f, %f, %f)\n",a[0],a[1],a[2]);
printf("b=(%f, %f, %f)\n",b[0],b[1],b[2]);
sum=0.0;
for(i=0;i<3;i++)
sum+=a[i]*b[i];
printf("内積=%f\n",sum);
return 0;
}
Re: 並列計算について
Posted: 2013年2月09日(土) 16:33
by h2so5
OpenMPで検索すれば簡単なサンプルコードが見つかるのでまずはそれを参考にしてみてはどうでしょうか。
あと、コンパイラは何を使っていますか?
Re: 並列計算について
Posted: 2013年2月10日(日) 10:39
by 宮本
自分の使用機種はiMacを使っています。
コンパイラはXcodeをインストールしてあるので、一緒にインストールされているのを使用しています。