our business

フィックスターズは、マルチコア並列処理技術やNAND Flash メモリ関連技術といった高度なソフトウェア技術を活かして、以下の4つの分野に対してさまざまなサービスやソリューション、各種製品を提供しています。

ハードウェア / ソフトウェア開発者向け
サービス / ソリューション

ハードウェア / ソフトウェア開発者向けサービス / ソリューション

さまざまなビジネスフィールドに向けて、高性能なマルチコアプロセッサを活用したハードウェアおよびソフトウェア開発のための一貫したサービスを提供しています。

企業 IT / HPC 向けサービス /
ソリューション

企業 IT / HPC 向けサービス / ソリューション

長年培ってきた並列化技術を活かして、オンプレミスまたはクラウドにあるお客様のIT基盤を最適化、高速化する各種サービスを提供しています。

大容量高速ストレージ・サーバ

大容量高速ストレージ・サーバ

長年培ってきた並列処理技術やNAND Flashメモリ関連技術を活かして、ユニークな製品の開発および販売を行っています。

機械学習関連事業

機械学習関連事業

ビッグデータの基盤であるHadoopシステムの高速化および画像認識を始めとする機械学習に関する実績に基づいて、新たに機械学習関連事業にも取り組んでいます。

フィックスターズの目指す世界

現在、人工知能技術の飛躍的な進化に伴い、近い将来コンピュータの知能が人類の知能を凌駕すると言われています。大量のデータを情報源として活用するIoT/AIの技術は、自動運転、ロボット技術、医療診断、工場自動化、ゲノム解析、マーケティング分析といった数多くの分野に適応され、人類の成長を魅力的に加速させることとなるでしょう。

IoT/AI時代の本格的な到来に向け、爆発するデータをどのように効率的に扱い、高度な分析アルゴリズムを限られた時間内に、限られたコンピュータ資源で、いかに実現するのかという課題が深刻となっています。このことは、これまでフィックスターズが培ってきた高速化処理技術の需要が益々高まり大きな役割を担っていくことを意味しています。

 

フィックスターズの強み

専門性

フィックスターズの開発チームには、画像処理、信号処理、ストレージ、コンパイラ、OS、データベース、数学、コーデックなど、様々な分野のバックグラウンドを持ちながら、x86、GPU、POWER、ARM、FPGAなど、マルチコアプロセッサ向けのソフトウェア開発を行う、プログラミング技術に長けたエンジニアたちが所属しています。また、長年の業務経験から、金融、医療、製造、通信といった業界における仕様を熟知しており、顧客ニーズに迅速に対応しながら、プロジェクトを円滑に進めることができます。

実績

マルチコアの有効性はすでに周知の事実ですが、それを十分に引き出すためには、マルチコアプログラミングに関する知識と技術と経験に基づいた高度なソフトウェア技術が必要不可欠です。フィックスターズはこれまで、国内外の金融、医療、産業機器、自動車、通信、放送、デジタルコンテンツ制作を行う企業や研究所における、マルチコアソフトウェアの開発をサポートしてきており、その多くがフィックスターズと継続的なパートナーシップを結んでいます。

手法

フィックスターズでは、業界最高品質のマルチコアソフトウェア開発サービスを提供する一方で、開発の効率化および、ソフトウェア資産の有効活用に向けた取り組みを行ってきました。そのひとつがM³です。M³は、複数の異なるプラットフォームで動作する並列ソフトウェアを必要最低限のコストで開発するためのミドルウェアです。M³を活用することで、ソフトウェア開発効率を高めながら、マルチコアの性能を十分に引き出し、かつプログラムのポータビリティを保つことが可能になります。

 

並列プログラミングの重要性

ICT機器の頭脳ともいうべきCPUは、それまで動作周波数をあげることによって性能を向上させていたのに対して、2000年代後半以降は複数のコアで処理を並列実行するマルチコア化によって性能向上が図られるようになりました。現在では、PCやサーバーはもちろん、スマートフォンやタブレットなどのモバイルデバイスや組込み機器でもこのマルチコアプロセッサが広く採用されています。またクラウドコンピューティングやHPCなどの分野では、複数のシステム (ノード) で分散処理をする並列化も行われています。

この「プロセッサのマルチコア化」や「マルチノードによる分散化」によって、従来の逐次処理とはまったく異なる並列プログラムコードが求められるようになりました。2000年代後半以降では、CPU の動作周波数はまったく変わらないか、むしろ若干遅くなる傾向にあります。そのため、1 つのコアで動作することだけを考えて作られたソフトウェアは、CPU を最新のものに変えたとしてもほとんど速くなりません。最新プロセッサの性能を引き出すためには、対象となるソフトウェアが複数のコアを使えるよう演算の並列化が必要になります。

さらに、一口に「並列化」といっても、ハードウェアの各種レイヤーによってその意味合いは大きく異なります。下図は並列処理の階層構造を示したものです。今、4台のワークステーションを用いて、クラスタシステムを構築し、ある画像処理を高速化するとしましょう。

  1. まず一番上の階層として、システムを構成する各計算機 (ノードと呼びます)へ、タスクやデータを分割し、並列実行を行う機構が必要です。
  2. 次に、各ノードのプロセッサは複数の演算コアを持っているため、ノード内部でも各コアに処理を分割し並列実行する必要があります。
  3. また、最近の演算コアはSIMD (Single Instruction Multiple Data) と呼ばれる、一度の命令で複数のデータを同時に処理できるベクトル演算器がついているため、「演算の並列化」も必要です。
  4. さらに、GPUやFPGAのような特定の演算が得意なプロセッサをシステムに組み合わせてアクセラレータとして利用する場合は、アーキテクチャに応じた最適化が必要です。

このように、システムの性能を最大限に引き出すためには考慮すべき項目が多数ありますが、ここでソフトウェア開発者にとっての最大の問題は、各レイヤーでの並列化プログラミングモデルが全く異なっていることでしょう。例えば、ノード並列の技術は、演算の並列化にはあまり役に立ちません。各レイヤーにおいて、ソフトウェア開発を簡略化してくれるフレームワークや言語は存在するものの、全てを習得し、さらにそれらを統合したソフトウェアを開発するのは至難の業です。コードは複雑化し、テスト項目の数は指数関数的に増加していきます。

アクセラレータとして特殊なプロセッサを用いた場合は、上記とは別の問題も発生します。特定の演算能力に優れたプロセッサを使う場合、その上で動作するソフトウェアは専用の言語であることが多く、専用言語で開発されたソフトウェアは、他のプロセッサ上で実行することはできません。そのため、将来、現行製品の次世代機が、現行製品とは異なるハードウェアアーキテクチャを採用した場合、現行製品の既存の実績あるソフトウェアは一から書き直すことになります。これは、製品の市場投入までの時間を伸ばし、コストを増やし、最終的には、製品の競争力を低下させることにつながりかねません。

ご購入、お見積り、お問い合わせ

御見積やお問い合わせについては、こちらからご相談ください。