ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    Clojureの並列処理

    このエントリーを含むはてなブックマーク はてなブックマーク - Clojureの並列処理 あとで読む
    Clojureに関して興味深いまとめ記事があった。

    [JVM][Clojure] Clojureについて本を読んだだけで語ってみるよ - Grな日々(uehajの日記)
    http://www.slideshare.net/uehaj/clojure

    8 多様な並行処理モデル
    ・ref & STM …トランザクショナルな(ロールバック可能な)アトミック操作(ACIDならぬACI)
    ・Atom …アトミックな参照変数だがロールバックはしない
    ・Agents …キューを使ってタスクを非同期実行 (結果的にアトミックになる)。synchronizedのwaitしないバージョン。GParsのSafeに影響。
    ・スレッドローカルなvar
    ・lock …Javaのsynchronized



    9 ref & STM
    SMT(ソフトウェアトランザクショナルメモリ)
    ・トランザクションは楽観的排他制御によってロールバックされたり再実行されたりするからして、副作用は許されない。→関数型の効用
    ・楽観的排他制御は「ロックフリーアルゴリズム」でありロック待ちしないので原理的に高速。やってみて駄目ならもう一度やる。マルチコア・メニーコア時代の新常識。



    Clojureには、並列処理のために便利な機能がたくさん用意されているようだ。

    ●並列計算に必要な言語仕様
    これからのプログラミングは、並列計算に対して最適化されていなければならないという話があった。
    コンピュータサイエンス史上最大の課題「並列処理による性能向上」~情報処理学会創立50周年記念全国大会の招待講演

    並列処理を前進させるためにやることはたくさんあります。まとめると次の3つではないかと考えています。
    * 自動パラレリズムとオプティマイゼーション
    * 高レベルの用途特化型言語(DSL)
    * C、Javaのような汎用言語を排除する


    そして、まだ触れていないのが、オートマチックでダイナミックなデータローカリティの最適化、移動、組織化、保有といったことです。どのような方法でデータをオーガナイズし、ストレージに格納し、素早く操作するか。

    一般にアーキテクチャは、計算ユニットとデータストア、この2つのあいだにあるバンド幅、レイテンシといったものを解決するためにあります。そしてここにパフォーマンスのバリアがあるのです。マシンの性能をより向上させていくには、こうしたバリアを乗り越えていくことが必要です。そしてこうしたバリアを乗り越えるためにキャッシュなどのデータをやりとりをするために多くの資源がつぎ込まれていきました。

    計算ユニットをもっとストレージの中に分散して入れていく、というモデルがあるのかもしれません。

    そして性能向上のための並列処理はこれ以上ハードウェアではできないのです。この道具をどう使うのか、それはソフトウェアにまかせられているのです。



    ・C、Javaのような汎用言語を排除して、高レベルの用途特化型言語(DSL)を並列処理に利用する。
    ・Webサーバのマルチコア化/メニーコア化が進めば、Clojureのニーズが高まるかもしれない。

    Java(OOP)から、次のプログラミング・パラダイム登場へと続く架け橋になるのがClojure(Lisp)?

    プログラミングClojureプログラミングClojure
    (2010/01/26)
    Stuart Halloway

    商品詳細を見る

    ●マルチコアの並列処理
    フォン・ノイマン型のコンピューターで利用される計算ユニットは、並列化によって数が増える方向に向かっている。

    GPGPUで激安スーパーコンピューターを自作する方法 - 浜村拓夫の世界
    PS3でスーパーコンピューターを作る方法 - 浜村拓夫の世界

    計算ユニット数に比例して性能が向上するわけではない。

    アムダールの法則 - Wikipedia

    アムダールの法則(アムダールのほうそく、Amdahl's law)は、システムの一部を改良したときに全体として期待できる性能向上の程度を知るための法則である。
    コンピュータ技術者ジーン・アムダールにより提唱された。
    並列コンピューティングの分野でよく使われ、複数のプロセッサを使ったときの理論上の性能向上の度合いを予測する。

    アムダールの法則を最も簡単に説明すると、「性能向上率を決定するのはプロセッサ数ではなくアルゴリズムである」ということになる。
    アルゴリズムは、これ以上並列化できないという地点に最終的に到達する。



    計算ユニットとデータストアの間のデータ転送遅延をハードウェアレベルで解決するには、フォン・ノイマン型のコンピューターのCPUとメモリを使うのではなく、量子コンピューターのエンタングルメントでデータを保持するしかないのではないか?

    ●参考
    Clojureをつくったわけ

    Rich Hickey
    なぜ私は新しいプログラミング言語を書いたのだろうか。次のような特徴を持つ言語が見つからなかったから、という理由からだ。

    * 並行処理のために設計された
    * 定評のあるプラットフォームと相性がよい
    * 関数型プログラミングのための
    * Lisp。


    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/481-39e497ca

    FC2Ad