タグ

並列に関するryochackのブックマーク (12)

  • コマンドを並列に実行するGNU parallelがとても便利 - りんごがでている

    最近のコンピュータは複数のCPUコアを持っているので並列にコマンドを実行することができます。 たくさんの同じようなファイルに同じ処理を実行することは、私のやっているバイオインフォマティクスではよくあります。 しかし自分で並列に実行するスクリプトを書くことはそれほど簡単ではなく、ログや実行結果の確認など煩雑な処理を書かなければいけません。 この記事では、そうした処理を簡単にするGNU parallelというツールを紹介します。 GNU parallel UNIX系のOSではインストールはとても簡単です。MacでしたらHomebrewを使って、Linuxでは各ディストリビューションのパッケージマネージャからインストールできます。 詳しくはGNU parallelのウェブページを参照して下さい(http://www.gnu.org/software/parallel/)。 Homebrew: b

    コマンドを並列に実行するGNU parallelがとても便利 - りんごがでている
  • 構造化『並列』プログラミング - どらの日記

    構造化プログラミング。 といえば、順次、分岐、ループのパターンからなる、シリアルプログラミングにおける基スタイルですね。(これらだけしか使わなくてもシリアルプログラムは書けますっていうね) C++にはあらかじめこれらのパターンを簡単に使えるようにシンタックスが用意されています。 分岐はifやswitch、ループはwhile、for、doといったかんじで。 もちろんこれらのパターンは並列プログラミングでも使えます。 しかし並列プログラミングにおいては、これらのパターンだけで実装を行うことはほぼ不可能です。 そこで、並列プログラミングにおけるパターンとなる構造が考えられてきました。 これらを使うことで、よりパワフルかつ簡潔に並列プログラムのコードを書けるようになります。 1.マップ もっとも基的な並列パターンです。 まず、コードを見てください。 template <class T> voi

    構造化『並列』プログラミング - どらの日記
  • C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS

    この記事は、インテル® ソフトウェア・ネットワークに掲載されている「32 OpenMP traps for C++ developers」 (http://software.intel.com/en-us/articles/32-openmp-traps-for-c-developers/) の日語参考訳です。 はじめに マルチコアシステムが急速な広がりをみせており、並列プログラミングへの早急な対応が求められています。しかしながら、経験豊富な多くの開発者にとってもこれは新しい分野です。既存のコンパイラーとコード・アナライザーでも、並列コードの開発中に一部の問題を発見することはできますが、多くの問題は検出できません。この記事では、OpenMP* を使用する並列プログラムが正しく動作しない原因となるさまざまな問題について説明します。 概要 並列プログラミングが登場したのはかなり以前のことです

    C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS
  • OpenMPの使い方:tech.ckme.co.jp

    OpenMPは複数のCPU(複数コアを含む)を持った計算機上での並列化に威力を発揮する。 OpenMPを使う最大の利点は、OpenMPに対応したコンパイラであれば、非常に簡単に並列化できる点である。 現在、gcc、Visual C++、およびIntelコンパイラなど主要なコンパイラはOpenMPに対応している。 習得も他の並列化技法に比べて比較的容易である。 なお、速度を最優先にする場合、単一コンピュータ上で動かした場合でも、メモリのローカリティのためかOpenMPよりMPIの方が効率のよいことが多い。MPIに関してはこちらを参照。 なお、インテルがOpenMP初心者向けに非常にわかりやすい文書を公開している。 OpenMPプログラムのコンパイル OpenMPの各種関数を使わない場合、#pragma ompで始まる指示をソースコード内に書き込み、下記のコンパイルスイッチをつけてコンパイルす

  • Go の並行処理 - Block Rockin’ Codes

    intro 先日の Go のカンファレンス GoCon で、 Go の並行処理周りについて発表させて頂きました。 Go Conference 2013 spring - connpass 具体的には Goroutine や Channel の話ですが、これらの機能は結構面白くて、いじって遊んでるだけでもわくわくします。 Go の並行処理は、設計方針がわりと特殊だと思うのですが、設計がシンプルなので分かるとそこまで難しくはないです。 (使いこなすのは、経験が必要そうですが) 今回話すにあたって色々調べましたが、発表時間の都合上省いたものもあるし、質疑応答で聞かれて応えられなかったこともあるので、 ここでまとめて置こうと思います。 発表資料 今回の発表資料はこちらです。 このブログの内容は、これをベースにします。 http://jxck.node-ninja.com/slides/gocon-

    Go の並行処理 - Block Rockin’ Codes
    ryochack
    ryochack 2013/07/15
    Goの並行処理の制御方法について。goroutineの終了の待ち方のデザインパターン。
  • 並列処理を体感してみよう (1/3)- @IT

    第1回 並列処理を体感してみよう 株式会社フィックスターズ 浅原 明広 2009/7/8 CPUの周波数の高速化競争が頭打ちになり、1コアにおける処理能力は限界となった。CPUの進化がマルチコア化に向かった結果、並列コンピューティングの門戸が開かれた(編集部) CPUの動作周波数が毎年のように改善され、ソフトウェアが放っておいても速くなったのは、古き良き時代の話。 Intel CPUの周波数が4GHzに近づいた2004年ごろからは、消費電力や発熱量の増加が、いわゆる“Power Wall”という深刻な問題として立ちふさがり、CPUの動作周波数は頭打ちとなりました。 変わってCPUの進化は、演算コアの増加という形で現れるようになってきています。つまり、CPUコアの動作周波数はまったく変わらないか、むしろ若干遅くなる傾向にあるため、1コアで動作するシーケンシャル(Sequential:逐次処理

  • Deferred/Promisesと非同期処理 - 素人がプログラミングを勉強していたブログ

    概念/仕組み Deferred/Promisesは非同期処理を簡単にするための取り決め。 callback hellと呼ばれているような、非同期処理によるコールバックのネストを軽減することができて非常に便利。 慣れれば便利だが、一見どう使えばいいのか分かりづらいので、少し解説を書く。 ここではPromises/Aという仕様を実装したQというライブラリを使うが、jQuery.Deferredなどもほぼ同じである。 まず、Deferred/Promisesは、関数のreturn、try/catchの非同期版である。 www.example.comの内容を取得し、正しく取得できたら中身を表示し、取得できなければエラーを表示する、というプログラムは 同期的なコードでは、 function get() { var req = new XMLHttpRequest(); req.open('GET',

    Deferred/Promisesと非同期処理 - 素人がプログラミングを勉強していたブログ
  • マルチスレッド - 某ソフト作者の開発日記

    複数スレッドから同一データベースを扱う場合は,それぞれのスレッドが sqlite_open より取得された sqlite* を持つ必要がある. って http://www.sqlite.org/c_interface.html の section 5.0 に書いてありますが,うっかり同じ出自の sqlite* を使ってしまいました.すると見事なまでにエラー続出.幸い,上記サイトを昨日参照したばかりだったので注意事項を思い出すことができた(内容までは覚えていなかったけど…). で,select 系はいいとして,update や delete, insert が同時に起こるとクエリーはどちらかが止まってしまうことに気づいた(具体的なエラー名はわかりません). これを回避するために,update 等が必要になる処理は CCriticalSection で囲うことにした.もちろん,検索専用スレッド

    マルチスレッド - 某ソフト作者の開発日記
    ryochack
    ryochack 2012/05/06
    複数スレッドから同一データベースを扱う場合は,それぞれのスレッドが sqlite_open より取得された sqlite* を持つ必要がある.
  • parallel と concurrent、並列と並行の違い - 本当は怖いHPC

    2017/01/10 誤字脱字を修正しました 2016/11/07 内容を修正しました 2010/09/17 文章を修正しました 一般的に、parallelは並列、concurrentは並行と訳されます。検索してもずばり書かれた物がなかったので、僕なりの理解を書いてみます。 (注:言葉の定義の問題なので、複数の流儀があり得ます。端的に言えば、いわゆるCPUSIMD命令を「並行」と見なすかどうかに違いが現れます) 参考リンク: http://d.hatena.ne.jp/NyaRuRu/20060129/p2 http://d.hatena.ne.jp/muimy/20070322/1174526368 一番妥当(だと思う)定義 一言で言えば、 Concurrent(並行)は「複数の動作が、論理的に、順不同もしくは同時に起こりうる」こと Parallel(並列)は、「複数の動作が、物理的に

    parallel と concurrent、並列と並行の違い - 本当は怖いHPC
    ryochack
    ryochack 2012/01/14
    並行と並列について。"「並列」と「並行」の違いは、「真に並列かどうか」である。誤解を恐れずに言ってしまえば、「並行=疑似並列」である。"
  • 並行と並列について-並行コンピューティング技法-を読んで - M-Tea

    以前FITEA定期勉強会で、並行と並列の違いについて議論になりました。 具体的な議論のポイントは 「並行」は時分割でスレッドを処理、「並列」はマルチコアで処理 「並行」は概念的に違うものを同時に処理、「並列」は同じ処理を分割して処理 というポイントで、簡単に検索してみたところ、両主張ともに見受けられ、その場では深く追求しませんでした。(別議論のなかのサブトピックであったので、時間的な都合もあり) 今回たまたま、以下のを読んでみて色々考えたので、それを記載してみます。 【送料無料】並行コンピューティング技法 価格:3,360円(税込、送料別) コンピュータサイエンス的な「並行」と「並列」 「並行コンピューティング技法」の1.1.2「並行と並列:その違いは?」に以下のようにあった。 システムが複数の動作(処理の流れ)を同時に実行状態(in progress)に保てる機能を備えている場合を 並

    ryochack
    ryochack 2012/01/14
    並行と並列の違いについて
  • Go言語 (Go lang)の並列プログラミングは超かんたん。 - このブログは証明できない。

    Googleが作ったプログラミング言語「Go」。シンプル、速い、うまい。吉野家の牛丼のようですが(かつての)、吉野家のようにひとりで入るにはハードルが高そうです。今日は思い切って、ひとりで突入してみました。ちなみに、公式サイトのキャラクターの名前は、「Hiromi」だと信じています。「Hiromi Go」です。間違いありません。 The Go Programming Language 人気プログラミングランキングGo langは13位にランクイン。 no title 最初は公式サイトのチュートリアルだけ見ていたのですが、サンプルコードが付属してくるようなので、処理系をインストールしてみました。Macなので、こちらの記事を参考に。 no title 私はLeopardなので、「export GOARCH=386」で動きました。それから、$GOROOT/binをmkdirしておく必要がありま

    ryochack
    ryochack 2012/01/11
    Goroutineの解説。
  • Parallel Computing

    このページは並列計算に関する情報を集めた際に自分の理解した範囲を 研究室在籍時代にまとめたものです。 書いている人はそれほどこの方法論に詳しいわけではないので、 間違っていることを書いている可能性が十分にあります。 お気づきの点がありましたらこちら までお知らせ下さい。 作成: 2000年4月18日 更新: 2001年9月18日 [並列化手法の種類] [HP-UX上の実装] [Tru64上の実装] [リンク集] 並列化手法の種類 並列化の基礎に関しては広島大の並列計算機入門 を参照。初歩的なことがかなり丁寧に書いてあります。 並列化にはいくつかの手法があります。通常は メモリ全体を複数のCPUで共有する共有メモリ型、それぞれの CPU(もしくは ノード)にメモリが分散している分散メモリ型の2種類があげられますが、 ここでは複数のマシンで複数のプログラムを同時に走らせる環境も一種の 並列環

  • 1