卒論中間発表 - Ueda Lab. Homepage

卒論中間発表
1G01P0467 酒井大輔
テーマ

正確に解くことの難しい最適化問題につい
ての(並列化)アルゴリズム
やったこと


folon4にocamlmpiをインストール(scoreで
は失敗?)
巡回セールスマン問題をhopfield型の
ニューラルネットで解くプログラムをmlとcで
逐次版と並列版を実装。その実行速度の
データをとった
やってないこと



アルゴリズムの精度評価
他のアルゴリズムとの比較(ボルツマンマ
シン、遺伝アルゴリズム)
巡回セールスマン問題以外の問題への適
用
ocamlmpiの記述性
(* mpi_test1.ml *)
open Mpi
let size = comm_size comm_world
let myrank = comm_rank comm_world
let _ =
if myrank=0 then send "Hello,World" 1 0 comm_world;
if myrank=1 then print_endline (receive 0 0 comm_world)
/* mpi_test1.c */
#include <stdio.h>
#include <string.h>
#include <mpi.h>
int main(int argc, char **argv){
int myid, numprocs;
MPI_Status status;
char msg[20];
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
if(myid == 0){
strcpy(msg, "Hello,World");
MPI_Send(msg, 20, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
} else if (myid == 1){
MPI_Recv(msg, 20, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status);
printf("%s\n", msg); fflush(stdout);
}
MPI_Finalize();
return 0;
}
hopfieldのアルゴリズムの説明



1:状態を更新
2:エネルギーを計算
3:更新前のエネルギーと比較して、その
差が一定以下ならば終了
hopfieldのデモ



参考文献1のサンプルプログラムのocaml
版
folon4上の
/home/sakai/study/sub1/folon4にある
hopfield_demo.ml
./hopfield_demo 10 testdata1 で実行
hopfieldのアルゴリズムにおけ
るデータ依存性
未更新
更新済み
hopfieldのアルゴリズムにおけ
るデータ依存性
未更新
更新済み
hopfieldのアルゴリズムの単純
な並列化



単純に並列化するとエネルギーがループ
を起こし、収束しない
パラメーターを変更するとうまくいく?
しかし、プロセッサ数を変えるとパラメータ
も変更しなくてはいけない
ocamlとcの実行速度比較



コンパイルはocamloptとmpiccのO2オプションを
使った。
MPIライブラリはscore-mpichはocamlmpiが安定
して動作せず、またuedalab以下にあるmpichは
バージョンアップで動かなくなっていたので、ホー
ムディレクトリ以下にmpich-1.2.6をインストール
し、これを用いた。
計測に使ったプログラムはhopfieldのエネル
ギーを求める部分。
逐次版



MPIを使っていないプログラム
並列版のプログラムもそうだが、グラフに
は3回測定したものの平均値を用いている
逐次版でも並列版でも一度のプログラムで
エネルギーは30回ずつ求めている
逐次版
N=一定




N(要素数)を一定にして並列効果をみたも
の。
Nは100,150,200の3種類を計測した
CPUは1から31の31種類について調べ
た
グラフを見る限り、データタイプの変換はそ
れほど大きなオーバーヘッドにはなってい
ないようだ
N=一定
CPU=一定



CPUの数を固定にして要素数を変化させ
たもの
CPUは5,10,15の3種類について調べた
グラフを見る限り、データタイプの変換はそ
れほど大きなオーバーヘッドにはなってい
ないようだ
CPU=一定
課題とかこれからの予定



アルゴリズムの精度評価、他のアルゴリズ
ムとの比較
ocamlmpiの実装を調べる
計測、フィルタリング、グラフ化を効果的に
できるように。
参考文献


Cでつくるニューラルネットワーク 平野廣
美
MPI並列プログラミング P.パチェコ