10代と話して驚いたこと

ちょっとした好奇心で質問しますが、
複雑な計算などをスパーコンピューターを使って行うときはどんな言語を使ってやるのでしょうか。
C++とかは普通に使えるのでしょうか。

宜しくお願いします。

A 回答 (10件)

Fortranです。



複雑な計算が何を指されているかわかりませんが、
これを複雑な現象と考えると、複雑な現象の数値解析のプログラムは最終的にはループになるようにアルゴリズムを工夫します。そうするとFortranはシンプルな言語ですので、スパコンに向いています。Cでもループの中身がシンプルならいけます。ただ、C++は言語自体が複雑で最適化が難しいのでスパコンで性能を出すのは難しいです。

ちなみにスパコンのトレンドはベクトルコンピュータではなく、スカラーパラレルです。例えば、Pentium等のCPUをたくさんつなげて並列実行することにより性能を出します。この場合、ループ長が長ければ良いというものではないので、うまくキャッシュにのるようにかつ並列実行したときにCPUが遊ばないように、プログラムを工夫します。
    • good
    • 1
この回答へのお礼

親切なご回答有難うございました。

お礼日時:2006/09/25 12:48

ごく最近はともかく、基本的にはFORTRANをベースにしたものです。


これは、スーパーコンピュータのベクトル演算器向けにプログラムを最適化する機構(ベクタライザやオプティマイザ)がFORTRANのコードと親和性がよい(というより、そのように作られた)ためです。また、システム自体のアーキテクチャもここからはき出されるコードに最適化されるように設計されています。
私がスパコンを常用していた頃(Fujitsu、CRAY)、使えたほとんどの言語を食わせてみましたが、FORTRANをベクトライザで最適化したのには太刀打ちできませんでしたね。

最近は、マジョリティーの移行もあり、C/C++も使われているようですが、これは実はかなり最適化しづらい言語なので、言語開発者は苦労しているんでしょうね。

余談として、スーパーコンピュータのベンチマークの標準であった、リバモアループなどもFORTRANで書かれています。それを品質保証のターゲットにするのですから、当然といえば当然の帰結かもしれません。

なお、ベクトル演算器を使わないような形式の高速演算器ではそれぞれのアーキテクチャに適合した言語を定めることもあります。有名なものだと、inmosがtarnsputer幼に作ったOCCAMでしょうか(すべて過去のものです)。
プロセス制御やデータフローが入ってくると従来の手続き型では制御しきれなくなります。
    • good
    • 1
この回答へのお礼

ご回答有難うございました。
参考になりました。

お礼日時:2006/09/25 12:49

メインフレーム・メーカー系のソフトウェア会社に、長年勤務していた者です。



スーパーコンピュータでは、FORTRAN系やC系のプログラミング言語が主に使われていますが、それぞれスーパーコンピュータ向けに開発された独自のコンパイラが搭載されています。

またスーパーコンピュータでは、メインフレームのOSを搭載できるものもあります。そういう点ではCOBOL、PL/Iなどメインフレームで使えるコンパイラは、スーパーコンピュータでも使える(ただし、最適ではない)ということになります。
    • good
    • 0

日本では Fortran や HPF が多いですが、米国では C++/C も結構使われているようです。

スパコンでCOBOLというのは聞いたことはないです。Java を使おうという話は(実際に使われている例は知らないけど)聞いたことはあります。強いて共通言語をひとつというのであれば Fortran でしょうか。最近流行のクラスタではC(++)やFortranとMPI(通信ライブラリ)の組み合わせが最も一般的です。

スーパーコンピュータというのは基本的に速さが売りで、プログラムを速く動かすことが一番の目的です。ということでマシンの性能もさることながら、コンパイラの性能を気にするユーザが多いのも事実です。日本では最適化(ベクトル化)が優れているという理由で (あるいは単に保守的なだけか?)Fortran が多いですが、F90 あたりになるとポインタが使えてしまうので、C程度の最適化になってしまい、Fortranのメリットは少なくなってしまいます。

スパコンは共通規格がないので、メーカーによってかなり癖があり、コンパイラ(言語)の有無や、問題の性質による得意/不得意の違いが、パソコンに比べ大きいですね。
    • good
    • 1

自信はありません。


有名な地球シミュレータは、
High Performance Fortran (HPF) ですね
http://www.jamstec.go.jp/jamstec-j/spod/system/s …
ここから調べればもっと解るかも
http://phase.hpcc.jp/
http://www.fsis.iis.u-tokyo.ac.jp/result/software/
古いと思うが
SHPF: an HPF compilation system:
http://www.vcpc.univie.ac.at/information/softwar …
C については、調べたことはありません。
    • good
    • 0

科学・技術計算が主なら、FORTLAN,C


事務処理なら、COBOL でしょうかね。
使えるコンパイラ次第かと思います。
OSの記述までできる理由から、C,C++が今は多いかと思います。
    • good
    • 0

必要な物によって違うでしょうね。


スーパーコンピュータをどこからとするかは
疑問ですが、汎用機レベル(これもある意味くくりが微妙)
で事務処理をする大企業ならまだまだCOBOLも現役でしょう。
    • good
    • 0

使用するOSによります。

一般的にはそのコンピューターメーカーが提供しているスパコン用OSによりますが、科学技術計算に使うことが多いと思いますので、C、FORTRANが多いでしょう。

http://www.hitachi.co.jp/Prod/comp/hpc/index-j.h …
    • good
    • 0

http://www.asahi-net.or.jp/~yp5k-tkn/news.html

Tacosanさんのおっしゃるとおり、Fortranが多いでしょうね。上だと一部はCで書いてるらしいですが。
東大のスパコンは、C、C++も使えるみたい。
    • good
    • 0

C++ でもいいかもしれないけど, 普通は Fortran じゃないかなぁ?

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報