- 概要
- 業務実績
蓄積された技術・ノウハウとコンサルティングベースの課題解決アプローチによりソフトウェアやシステムの高速化ニーズにお応えします。
高速化コンサルティングサービスイメージ
現状把握
処理高速化をご検討された背景や、処理の内容、また目指すべき処理速度等をヒアリングさせていただきます。既に高速化に向けた取り組みをお客さまで行っている場合には、その状況もお伺いいたします。また、状況に応じ、ソースコードの静的解析や、プロファイリングにより、ボトルネック解析を行います。
高速化方針のご提案、開発支援
ヒアリングや現状のソフトウェア解析の結果を踏まえ、高速化度合の見込みや、改修方針を検討し、ご提案いたします。なお、高速化の改修を行う場合、通常は様々なトレードオフ(例:処理速度vsソースコードの可読性)が生じるため、それらについてご理解をいただき、高速化の可能性や開発期間、お客さまのご予算とご相談のうえ、改修作業、効果の検証作業へ移行させていただきます。

高速化にかかわる検討・開発・システム構築イメージ
並列処理による高速化
プログラムの処理速度を上げる方法のひとつとして、計算処理の並列化があります。並列化の手法には、処理対象のデータを分割して同時並列に処理を行う「データ分割」と、処理を小さな工程に分割する「機能分割」があり、データ量や使用するアルゴリズム、要求する性能に応じて、適した並列化手法を選択する必要があります。加えて、CPUによる「マルチスレッド/マルチプロセス」や「SIMD」、GPUを用いた「GPGPU」といった並列処理を実現する技術の選択も必要です。
並列化適用例
左右スクロールで表全体を閲覧できます
分野 | アルゴリズム例 |
---|---|
数値計算・画像処理・機械学習 | FFT、DCT、ウェーブレット解析、各種フィルタ、テンプレートマッチング、動き推定 |
探索・シミュレーション | モンテカルロシミュレーション、有限差分法、ツリーモデル、動的計画法 |
物理シミュレーション | 分子動力学法、布シミュレーション |
並列化技術例
マルチスレッド/マルチプロセス
どちらも複数の計算コアを用いて同時並列に処理することで、計算速度を向上させる技術です。マルチスレッドは一つのプログラム(プロセス)の中で、同時並列に処理を行う技術であり、マルチプロセスは複数のプログラム(プロセス)を同時並列に実行する技術であり、求める処理速度や、処理の独立性等の様々な要件から適した選択を行う必要があります。
左右スクロールで表全体を閲覧できます
キーワード | マルチスレッド、マルチプロセス、マルチタスク、マルチコア、メニーコア、マルチCPU、ハイパースレッディング、OpenMP、MPI |
---|
SIMD (Single Instruction Multiple Data)
SIMDはCPUなどのプロセッサにおいて1命令で複数のデータを処理することができる技術です。例えば、画像データ全体に加算や乗算を行う処理の場合、1画素ずつ処理を行うのではなく、プロセッサの1回の命令で複数画素に同時に演算を施すことが可能になり高速化を図ることができます。
SIMDの実装にはSSEやAVXといったSIMD命令を用いたプログラムへの書き換えが必要ですが、画像処理や信号処理等の行列やベクトルに同じ演算を繰り返す処理において、追加のハードウェア無しに高速化を図れる場合があります。
左右スクロールで表全体を閲覧できます
キーワード | SIMD、SSE、AVX、CPU拡張命令 |
---|
GPU(Graphics Processing Unit)、GPGPU(General-Purpose computing on GPU)
GPUは従来、3Dグラフィックスの表示に必要な演算を行うアクセラレータとしてPCに搭載されてきました。GPUにはCPUとは比較にならないほどの大量の計算コアが搭載されており、その大量の計算コアによる並列計算能力を3Dグラフィックス処理に限らない、汎用の演算に利用する技術をGPGPUと呼びます。
GPUは高い並列処理能力を有する一方で、1コアあたりの演算速度はCPUには及ばないため、実装にあたっては従来の処理のうち、どの部分をGPUで演算を行うか等の詳細な設計が必要になります。
左右スクロールで表全体を閲覧できます
キーワード | GPGPU、GPUコンピューティング、CUDA、OpenCL、ハイパフォーマンスコンピューティング |
---|
当社は、さまざまな高速化技術を駆使し、分野を問わず、お客さまのニーズに合わせてソフトウェア高速化の課題解決に貢献します。
- *CUDAはNVIDIA Corporationの商標または登録商標です。