- ベストアンサー
パラレルコンピューティングに適した言語
ある友人からはCかC++しか対応していないと聞きましたが、他の人からはFortran77か90でも対応していると伺いました。 私自身は素人ですが、これからパラレルを意識してコーディングをするとした場合CとFortranどちらで始めたほうがよいのでしょうか?後者は過去のがあるので有利ですが、パラレル化出来なければ問題です。そうであれば最初からCで書き直したいと思っています。 アドバイス宜しくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
私はOpenMPとMPIしか知りません。 その上でコメントをさせてもらいます。 FortranでもCでも並列計算は行えます。 好きな方を使えば良いと思います。 Linuxであれば、Fortran、Cのいずれでも、フリーでintelのコンパイラ(非商用)やGCCのコンパイラをインストールして、OpenMPを使うことができます。 大規模な計算をするのであれば、よほどの理由が無い限りインタプリタ(PerlやPython)はやめてコンパイラ(Fortran,C)を使った方が、計算速度の観点から、良いと思います。 分野にも寄りますが、Fortranはまだまだ現役の言語です。 私のまわりにはMD法やFEM法などのコーディングをしている方がたくさんいますが、Cを使っている方の割合の方が少ないくらいです。 最後に、Fortranを使うのであれば、77より90でコーディングすることをお勧めします。Fortran90の方が多機能です。90でコーディングしても77で書かれたモジュールを利用することは可能です。
その他の回答 (6)
もっと、応用を明記して、質問したほうがいいでしょう。 ナンバークランチャ的な応用なら、今でも、Fortranでしょ。 それとも,grid computingみたいなことを考えてるのでしょうか?
補足
素人で必要情報が不足していたかもしれません。 目的:大規模解析モデルの数値解析処理時間の短縮です。具体的にはFEMやMDモデル等の大規模行列演算、要素間情報取得、要素数値積分等の作業を並列化することです。 ナンバークランチャというのは勉強不足で分かりませんが、グリッドコンピューティングは考えておりません。 以上宜しくお願い致します。
- id357
- ベストアンサー率29% (39/133)
今、での マルチプラットホームとは 普通には UNIX,Linux,Mac,Windows すべてで動作可能なPG(環境) と、思っています。 多分、公、にもそう判断されているように思います。 Fortran と C が、どうかは 少々調べてみないと断言できないです。 知識不足で申し訳ありません。 その道で行こうと決心されているようですので それで良いのではないですか。
お礼
再度回答ありがとうございました。 マルチプラットフォームとは、記載頂いた様な多岐なOSの事言うんですね。勉強になりました。
- cynthia4
- ベストアンサー率51% (186/358)
全く違う話かと思いますが 地球シミュレータ http://ja.wikipedia.org/wiki/%E5%9C%B0%E7%90%83%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF では、 HPF(High Performance Fortran) を使っていますね。 個人レベルでは難しいと思いますが こんなものも有るという事だけです。
お礼
回答ありがとうございました。 こんな大規模なものもあるんですね…。FortranとC/C++と記載があったのでまだfortranも現役だなと感じました(笑)。
- id357
- ベストアンサー率29% (39/133)
Fortran て、今でも生きていたんですね。 これから、やるかも、とのことで、びっくりしました。 自分がやったころは、「Basic Fortran」で 若干、混じりっけのあるような言語でした。 ちょうど 今で言う、パソコン(当時は、マイクロコンピューター) の時代です。(歳がばれますね) パラレル制御がどうか、と言われると 判断しかねますが、プログラムの基本を学ぶには 良い言語だと自分は判断します。 C言語系も、きらいではありません。 ただMSが、あまりにオブジェクト指向を前面に出しすぎて なにもかもごちゃごちゃになって、 判断しかねる。との状況はあると思います。 自分も、いいかげん嫌になって、今現在は Python を模索しています。 これからは、マルチプラットホームで動作するかどうかが 決め手になると思います。 その上で、判断されたらいかがでしょうか。
お礼
回答ありがとうございます。 確かにFortranというと驚く方もいます。目的は科学計算なので過去の蓄積があるので未だに健在なのです。Cはオブジェクト指向の概念が理解できていませんが、少しは使えますし、Windows主体の当ラボではいいかなと思っています。Pythonはコンピュータサイエンス専門の友人から薦められ少し知っていますが、ラボ内での汎用性の見地からFortranかCに絞っている次第です。 あと教えて頂きたいんですが、マルチプラットホームとは多OS上で動作可能という事でいいでしょうか?Fortran77かCであればマルチプラットフォーム対応しているんでしょうか?
- cametan_42
- ベストアンサー率62% (162/261)
聞いた話だと、Prolog、Haskell、Erlang辺りも「強い」って話ですけどね。 Prolog入門 http://bach.istc.kobe-u.ac.jp/prolog/intro/ Programming in Haskell http://www.sampou.org/cgi-bin/haskell.cgi Erlang World http://erlangworld.web.fc2.com/ 上に参考サイトを挙げておいたので、調べてみてください。 まあ、これが本当なら、「それなりに対応している言語が多い」って事なんでしょう。
一口にパラレルコンピューティングと言っても、前者がOpenCLを指してて後者がOpenMPを指してるならどちらも間違ってはいないし http://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0#.E8.A8.80.E8.AA.9E ↑言語的にどっちも適してないんじゃない、というのも正解になるし 他にはPerlにもParallel::MPIというMPIを利用するモジュールがあります C#用にMPI.NETなんてのもあります 要件にあった一番やりやすいのでやればいいと思います
お礼
回答ありがとうございます。 MPIは友人が授業を受講し少し聞いたのですが、OpenMPというのがあるのですね。フリーのコンパイラでも使えるのはありがたいです。調べています。 あとご指摘の取り大規模計算はコンパイラで行います。Fortran90はラボの設備としてあるか確認してみます。出来れば90にしたいと思います。 ありがとうございました。