高速プログラムへの最適化
プログラム高速化で時間短縮、作業効率大幅アップ
CPUを含むハードウェアの性能は近年、飛躍的に進歩を遂げており、それに伴い新しい技術も多く生まれています。
プログラムの高速化を図るには、ハードウェアの交換が効果的ですが、
お客様がお使いになっている製品によっては、換えがきかない、莫大なコストがかかる、
システムに組み込むまでに時間がかかる、など簡単には出来ない場合もあります。
そこで、古いハードウェアに合わせて作られたプログラムを見直し高速化を図ることで、
生産性・パフォーマンスの向上やコストの削減を実現することが可能になります。
また、ハードウェアを買い換えるよりも、プログラムの高速化をした方が効果が高い場合もあります。
具体的な作業内容
プログラムの高速化には、様々なレベルがあります。
弊社ではお客様のご希望により、各レベル全てのご要望にお応えすることが可能です。
ご予算の都合や納期など様々な制約がある中であっても、最も効果的な方法で高速化を行います。
レベル0 調査
各種プロファイラーの利用により、プログラムのどの部分に一番時間がかかっているかを解析します。
特殊なOSでプロファイラーが利用できないときでも、コードを埋め込んだり、ロジックトレーサを使って測定いたします。
レベル1 コードの見直し
サブルーチン単位でプログラム・コードを見直します。
-
コンパイラの最適化
コンパイラとの整合を取り直して、高速化を計ります。
場合よっては、コンパイル手法を変更するだけで10%以上の改善が見込めます。 -
forループの最適化
ループを整理し、最適なステップ数で実行される様に書き直します。 -
メモリの読み書き最適化
メモリの読み書きアドレスをなるべくキャッシュに載るような形で考え直します。
データキャッシュの整合性をコード側で取ることにより高速化を計ります。 -
CPU/SSE命令の利用
PentiumⅢ以降採用されているマルチメディア命令セットや、MMXの後継に当たる浮動小数点演算平行処理機能、 3D命令セットなどを積極的に利用し、部分的に高速化を計ります。 -
GPUの利用
ブラフィック・チップに装備されているGPU命令を積極的に使うようにコードを修正します。
以下のI/Fを選ぶことが出来ます。-
OpenCL
主としてInterl第3世代Coreプロセッサー (IvyBridge) 以降のCPUの内蔵のグラフィックコントローラのGPUが使用でき、 外部GPUボードを使わずに高速化する事が出来ます。
少し冗長的ですが汎用的なI/Fもあり、GPUが変わっても使えるように記述することもできます。 -
CUDA
NVIDIA専用の命令セットで、ベクトル・行列演算、FFTが高速で実行できます。
GeForce8以上が必要です。 -
ATI Stream
AMD専用の命令セットでCPUとGPUとの処理能力の融合により高速化が望めます。
CUDAとどちらが早いかは目的の機能によります。
-
レベル2 アルゴリズムの見直し
仕様を整理し、設計レベルからの見直しを行います。
-
制御ループの最適化
設計変更により、制御ループをより簡単にし、高速化を計ります。 -
計算ロジックの見直し
計算方法そのものよりも、全体の動きを見直した結果として、計算ロジックをより高速的な手法に置き換えます。
その後、GPUの利用などして、高速化を計ります。
レベル3 OSとの関係見直し
OSが存在する場合、OSとの関係を見直し、CPU動作レベルを変更します。
それにより、OSとのオーバヘッドを少なくします。
例えば、入出力ルーチンをドライバ化したり、フィルタードライバを積み重ねることにタスク切替時間を最適化できます。
それにより、OSとのオーバヘッドを少なくします。
例えば、入出力ルーチンをドライバ化したり、フィルタードライバを積み重ねることにタスク切替時間を最適化できます。
レベル4 ハードウェアの追加
ソフトウェアだけで満足できない場合は、ハードウェアの追加をします。
-
CPUの増設
並列化できる処理であれば、CPUを増やせば、CPU個数倍の速さになります。
この場合、OpenMPを利用したマルチスレッド化や、独自のマルチプレセス化を設計することもできます。 -
専用ハードウェアの追加
時間がかかる部分をそのままハードウェアで置き換えます。
ALTERAやXilinxの試作ボードと、そのドライバソフトを全て納品することが可能です。
ハードウェアの記述言語はVHDLやAHDLやVerilog、システムCなどから選んでいただけます。
最終的にASICにすることも可能です。
プログラムをお預かりする前に秘密保持契約を結ばせていただきますのでご安心ください。
ISMSに基づいて厳重に管理し、受託内容に関して秘密厳守で対応いたします。
ISMSに基づいて厳重に管理し、受託内容に関して秘密厳守で対応いたします。