パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

マイクロプロセッサの未来、将来のコンピュータスタイルは ?」記事へのコメント

  • 並列化 (スコア:1, すばらしい洞察)

    by Anonymous Coward
    >効率的な並列化を実現する言語
    効率的なのはもちろんだけど、あえて「ここは並列で!」なんて指示しなくても良きに計らってくれるくらいでないと、なかなか厳しいと思う。
    #pragma omp parallelうねうね。
    • by Anonymous Coward

      C/C++は抽象度が低すぎるから勝手に並列化するのはかえって難しいんですよ。
      プログラマの「人間様である俺様がもっとも高速なプログラムを書けるんだ」信仰と、それを支えるC/C++にover optimizeされたハードウェアアーキテクチャのせいでいつまでたってもC/C++支配は終わりそうにありませんが。

      • 手続き型言語は順次実行されるという概念が、並列化を妨げてる気がする。

        例えば、C/C++っぽいものを使うにしても。
        ・並列可能なブロックを二重波カッコで区切る
        ・ブロック内で、上に記述されている処理が全て実行されるまで待機しなければならない場合、二重セミコロンをつける
        とでもしたら、マシになったりしないかなぁ?

        例えば
        int main(){
         foo();
         bar();
         {{
          hoge1();;
          hoge2();;
          hoge3();
         }}
         ;;
         baz();
        }
        としたら、foo()とbar()と、{{hoge1(), hoge2(), hoge3()の順次実行}}を並列にして、その全てが終わるのを待ってからbaz()を実行する、といったように。

        # スレッド分割、順序入れ替えを行うか行わないかはコンパイラ判断で。

        --
        1を聞いて0を知れ!
        • Objective-C + Cocoaだと、ブロック(いわゆるクロージャ)で並列部分を記述してNSOperationQueueに好きなだけ突っ込み、
          waitUntilAllOperationsAreFinishedメソッドで待機すればお望みのことが可能ですよ。(Grand Central Dispatch)
          フレームワーク側でCPUコア数などを勘案し、スレッドを準備してくれます。

          参考リンク
          http://decafish.blog.so-net.ne.jp/2008-04-23-1 [so-net.ne.jp]

          • 私の書いたコメントで、最も大切な部分は、ブロックではなく、
            明示していない限り、すべての文の実行順序が不定になることです。

            何かのライブラリやら組み込みクラスやらを使って、
            ユーザが明示的にマルチスレッドにする部分を書くようじゃ、
            pthread使うよりは簡単だねってだけの話です。

            --
            1を聞いて0を知れ!

アレゲは一日にしてならず -- アレゲ研究家

処理中...