ホーム 道しるべ 憩いの広場 濃緑空間 濃緑研の日記

参戦にあたって
ホーム ] 上へ ] [ 参戦にあたって ] エントリの手引き ]

 

3次元の重力シミュレーション(地球重力場における衛星の振る舞い)
の計算部分(FPU)の速さを競います。
vさん提供のプログラム本体(実行形式:exeファイル)をサーキットとして利用します。

参戦される方はオイラー法に従ったバリバリに演算チューニングしたベンチマークプログラムを
DLLルーチンとしてください。


参戦DLLに装備すべき機能

サーキット整備班が用意する参戦用資料(簡易SDK:参戦用ヘッダファイル・defファイルサンプル・ソースサンプルおよびRound1参戦規定・規約)をご覧ください。

詳細については上記資料のRound1規定・規約をご覧ください。


基本アルゴリズム

基本アルゴリズムはEular法による人工衛星の軌道計算プロ グラムが元になっています。
繰り返し回数は引数nで渡しますです。
サーブルーチン全体が性能評価区間です。この区間での最適化は どのようなツール、
手法を使ってもかまいません。また、実行可能なCPUアーキテクチャーに制限があってもかまいません。

R = sat.P.X*sat.P.X+sat.P.Y*sat.P.Y+sat.P.Z*sat.P.Z;
w = GMdt/(sqrt(R)*R);
sat.V.X += w*sat.P.X;
sat.P.X += sat.V.X*dt;
sat.V.Y += w*sat.P.Y;
sat.P.Y += sat.V.Y*dt;
sat.V.Z += w*sat.P.Z;
sat.P.Z += sat.V.Z*dt;

n回の計算が終了した後最終位置座標(sat.P.X, sat.P.Y, sat.p.Z)を引数satに戻してください 

プログラムに使用されるパラメータは以下のとおりです。

G = 6.67e-11;
M = 5.977e24;   //地球の質量(kg)
GM = G*M;
GMdt = -GM*dt;
sat.P.X = 6.57e6;  //地球の半径+200km
sat.P.Y = 0;
sat.P.Z = 0;
sat.V.X = 0;     //初速7.92km/s
sat.V.Y = 6e3;
sat.V.Z = 5.17e3;

dtについては引数で渡されたものを使ってください。