卒論中間発表 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.パチェコ
© Copyright 2024 ExpyDoc