タグ

並列処理に関するItisangoのブックマーク (18)

  • マルチスレッド :: やり直しJava

    スレッドの現在の状態は ThreadクラスのgetState()メソッドで確認することができます。 スレッド間通信と同期スレッド間通信スレッド間通信と言うと 大袈裟な感じもしてしまいますが、スレッド間でデータをやり取りしたり 待ち合わせを行うことを指します。スレッド間通信は共有メモリを介して行います。共有メモリとして利用できるのは ヒープ領域に置かれたインスタンスやクラスフィールド等です。具体的には次のような方法でスレッド間通信を行うことができます。 クラスフィールドを介してスレッド間通信を行う。クラスのシングルトンオブジェクトを介してスレッド間通信を行う。共有するオブジェクトの参照を それぞれのスレッドで持ち合い、共有オブジェクトを通してスレッド間通信を行う。並列処理を行う場合、スレッド間通信が必要なければ シングルスレッドの場合と変わらないので 難しいことは何もありません。しかし 大抵

  • Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい - argius note

    この記事は、個人的なおさらいのための、Java Concurrency Utilitiesの一部を使ったサンプルとメモです。 目新しいものは特にありません。 記事内のサンプルとAPIドキュメント参照はJava7(Java SE 7)を基準にしていますが、Java Concurrency Utilities自体は一部を除いてJava5(Java SE 5.0)から使えるようになっています。 あと、いつものことですが、画像がありません。 追記(2014-01-05): この機能の呼称は (Java) Concurrency Utilities が公式で、この記事内の"Utility"というのは正確ではない+混在していますのでご注意ください。ごめんなさい。 追記(2014-08-15): この記事は、キーワード"Java Concurrency Utilities"でGoogle検索した時に2番

    Concurrency Utilitiesを使った並列処理・マルチスレッドのおさらい - argius note
  • マネージ スレッド処理 | Microsoft Docs

    このセクションの最初の 5 つの記事は、マネージド スレッド処理を使用するタイミングを判断するのに役立つように設計されており、また、いくつかの基的な機能について説明するためのものです。 その他の機能を提供するクラスについては、「スレッド処理オブジェクトと機能」と「同期プリミティブの概要」を参照してください。 このセクションの残りの記事には、マネージド スレッド処理と Windows オペレーティング システムとの相互作用など、高度なトピックが含まれます。 このセクションの内容 スレッドおよびスレッド処理 複数のスレッドの利点と欠点について説明し、スレッドを作成またはスレッド プール スレッドを使用する可能性のあるシナリオの概要を示します。 マネージド スレッドの例外 さまざまなバージョンの .NET のスレッドでのハンドルされていない例外の動作、特に、アプリケーションの終了の原因となる状

    マネージ スレッド処理 | Microsoft Docs
  • タスク並列ライブラリ (TPL) - .NET

    タスク並列ライブラリ (TPL: Task Parallel Library) は、System.Threading 名前空間および System.Threading.Tasks 名前空間におけるパブリック型と API のセットです。 TPL の目的は、アプリケーションに並列処理とコンカレンシーを追加するプロセスを簡略化して、開発者の生産性を高めることです。 TPL は、使用可能なすべてのプロセッサを最も効率的に使用するように、コンカレンシーの程度を動的に拡大します。 さらに TPL は、作業のパーティション分割、ThreadPool 上のスレッドのスケジュール、キャンセルのサポート、状態管理、および他の低水準の詳細を処理します。 TPL を使用すると、コードのパフォーマンスが大幅に向上し、目的を達成するためのプログラミング作業に集中できます。 .NET Framework 4 では、マル

    タスク並列ライブラリ (TPL) - .NET
  • プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー

    Concurrent programing explanation for akka beginers. 並行処理初心者のためのAkka入門 akka meetup 2014/09/28(日) http://connpass.com/event/8622/ このイベントの導入説明のために書かれました。 内容には、並行処理、アクターモデル、Akkaの機能の説明となっています。

    プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
  • 第6回 データ処理における並列アルゴリズム[1] | gihyo.jp

    はじめに 前回は、データ処理における並列性について説明しました。今回からは数回に渡って、当該データ処理における具体的な並列アルゴリズムについて説明します。まずはその準備として、並列システムの性能指標について見ていきます。 並列システムや並列アルゴリズムにおける性能指標 並列システムや並列アルゴリズムを評価する場合においては、スケーラビリティ(Scalability)という指標が用いられることがあります。スケーラビリティは、仕事量や計算資源などが増加したときの処理能力や性能特性を表すものであり、データ処理におけるスケーラビリティの指標は次の2つに分類することができます。 スピードアップ(Speed-up) スケールアップ(Scale-up) スピードアップは、あるジョブを処理する場合において、当該ジョブを処理する計算機などの計算資源を増やしたときに、当該ジョブの処理するための時間がどの程度低

    第6回 データ処理における並列アルゴリズム[1] | gihyo.jp
  • 直列加算と並列加算でdoubleの足し算の結果が変わる話 - きしだのHatena

    Javaに限った話ではないのだけど、Javaで並列加算が気軽にできるようになったので、気に留めておいたほうがいい話。 まず、次のようなコードを動かしてみます。 public static void main(String[] args){ double[] data = { 1.234E80, -1.234E80, 2, 3}; System.out.println(Arrays.stream(data).sum()); System.out.println(Arrays.stream(data).parallel().sum()); } 1.234×10^80と-1.234×10^80という、桁が大きくて符号の違う数を並べて、そのあとに2と3という1桁の数値を置いています。 これらを加算すると、1.234×10^80と-1.234×10^80は符号が違うだけなので、当然結果は0になります

    直列加算と並列加算でdoubleの足し算の結果が変わる話 - きしだのHatena
    Itisango
    Itisango 2013/11/24
    これって、精度が必要な場合には並列加算は出来ないってことになるんじゃないのかな?
  • 失敗しない並列プログラミング

    印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます IntelのJames Reinders氏が、並列システムのプログラミングについて、改良を目指す開発者にとって繰り返しテーマとなる事柄を紹介する。 ※関連ビデオ 再生時間:7分41秒

    失敗しない並列プログラミング
  • インテル、JavaScriptに並列処理機能を追加する「River Trail」プロジェクトを初披露。IDF 2011

    インテル、JavaScriptに並列処理機能を追加する「River Trail」プロジェクトを初披露。IDF 2011 「JavaScriptはこれまでほとんどの場合、クライアント側でシーケンシャルな処理をしてきた」と語るのは、インテルのイベント「IDF 2011」に登場したJavaScriptの生みの親、モジラのCTO Brendan Eich氏。 そのEich氏に前に、JavaScriptに並列処理機能を追加する「River Trail」をインテルラボのディレクター兼CTOのJustin Rattner氏が初めて披露しました。 JavaScriptでマルチコアを活用する「River Trail」 River Trailは、「データ並列」な処理を実現するためのJavaScriptの拡張。 デモンストレーションでは、物理シミュレーションとして宇宙空間でお互いに影響し合う星の振る舞いを表示し

    インテル、JavaScriptに並列処理機能を追加する「River Trail」プロジェクトを初披露。IDF 2011
  • グスタフソンの法則 - Wikipedia

    グスタフソンの法則(英: Gustafson's law、Gustafson-Barsis' law としても知られる)は、計算機工学における法則で、「十分に大きな規模の問題は、効率的に並列化して解くことができる」事を示すものである。グスタフソンの法則は、並列化によってプログラムが高速化できる限界を示したアムダールの法則と密接に関係している。法則は、ジョン・グスタフソンによって1988年に初めて示された。 P がプロセッサの数であり、S がSpeedup、α がプロセスの並列化できない部分であるとすると、下記が成立する。 グスタフソンの法則は、計算機の規模が大きくなると利用可能な計算能力を使い切るほど性能がスケールしないというアムダールの法則に欠けていた部分に対応するものである。グスタフソンの法則では、問題の規模が固定である、また並列プロセッサ上の計算の負荷が一定であるという仮定を取り除

  • アムダールの法則 - Wikipedia

    複数のプロセッサを使って並列計算してプログラムの高速化を図る場合、そのプログラムの逐次的部分は、制限を受ける。例えば、仮にプログラムの95%を並列化できたとしても、残りの部分である5%は並列処理ができないため、どれだけプロセッサ数を増やしたとしても、図で示したように20倍以上には高速化しない。 アムダールの法則(アムダールのほうそく、英語: Amdahl's law)は、ある計算機システムとその対象とする計算についてのモデルにおいて、その計算機の並列度を上げた場合に、並列化できない部分の存在、特にその割合が「ボトルネック」となることを示した法則である。コンピュータ・アーキテクトのジーン・アムダールが主張したものであり、アムダールの主張(アムダールのしゅちょう、英語: Amdahl's argument)という呼称もある[1]。 複数のプロセッサを使い並列計算によってプログラムの高速化を図る

    アムダールの法則 - Wikipedia
  • わんくまで発表してきました - Faith and Brave - C++で遊ぼう

    「『ストラウストラップのプログラミング入門』で語られなかったいくつかのこと」 というタイトルで発表してきました。 Bjarne dont speaking View more presentations from Akira Takahashi Bjarne Stroustrupの『ストラウストラップのプログラミング入門』は、プログラミングを学んでいくためのすばらしい書籍ですが、プログラミングの基礎ができたら次は、「プログラミングにはどんな分野があるか」を知り、自分の興味ある分野はなんなのかを確かめることが必要なのではないかと思い、『ストラウストラップのプログラミング入門』の補完的な内容として、プログラミングのいくつかの分野を紹介させていただきました。

    わんくまで発表してきました - Faith and Brave - C++で遊ぼう
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • Erlang - Wikipedia

    Erlang(アーラン)は、コンピュータにおいて汎用的な用途に使うことができる並行処理指向のオープンソースソフトウェア(英:Open Source Software、略:OSS)プログラミング言語および実行環境。 概要[編集] Erlangの直列処理のサブセットの言語は、関数型言語であり、先行評価を行い、変数への代入は1回限りであり、動的型付けである。 Erlangはエリクソンにより次の条件のシステムを構築できるよう設計された。 分散化された環境 障害に耐性をもつ(IT用語における「フォルトトレラント」(英:Fault tolerant))。 ある程度のリアルタイム性を備える 無停止で稼働する ホットスワップが可能であり、稼働中のシステムを停止すること無くErlangのプログラムを変更することができる。Erlangは、当初はエリクソン社内部だけで使われる非公開の技術であったが、1998年に

    Erlang - Wikipedia
  • OpenMP - Wikipedia

    int main(int argc, char *argv[]) { int i; #pragma omp parallel for for (i = 0; i < 10000; ++i) { /* (並列処理させたいプログラム) */ } return 0; } OpenMPはループの反復処理を自動的に複数のスレッドに分割して並行処理できるようにする。例えば4つのスレッドを用いて処理を分割する場合、上記例ではインデックス[0, 2499], [2500, 4999], [5000, 7499], [7500, 9999]の各範囲をそれぞれのスレッドに分担させる、といった具合である。実際にいくつのスレッドを起動するのか、また各スレッドに対してどのように処理を振り分けるのかはOpenMP処理系(コンパイラ)およびプログラム実行環境などの条件に依存する[9]。 以下は区分求積法を用いた円周率π

  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌

    長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌
  • OpenCL - Wikipedia

    OpenCL(オープンシーエル、英: Open Computing Language)は、マルチコアCPUGPU、Cellプロセッサ、DSPなどによる異種混在の計算資源(ヘテロジニアス環境、ヘテロジニアス・コンピューティング、英: heterogeneous)を利用した並列コンピューティングのためのクロスプラットフォームなAPIである。主な用途は科学技術計算や画像処理に代表される高性能計算のためのアプリケーションソフトウェアの高速化(ハードウェアアクセラレーション)であり、シミュレーション可視化に用いるリアルタイム3次元コンピュータグラフィックスAPIとの連携も拡張機能として標準化されている。スーパーコンピュータやサーバ、ワークステーションやパーソナルコンピュータのほか、携帯機器などでの利用も想定されており、組み込みシステム向けに必要条件を下げたOpenCL Embedded Profi

    OpenCL - Wikipedia
  • 並行処理についての個人的思考のまとめ -処理の同期化編- - Akinekoの日記

    最近転職活動の一つとして何か形になるものを作ろうとツイッター関係のアプリを作成しているのですが、その際に並行処理化したい部分が出てきてあれこれと考えたので、その考えを整理する為にもまとめを書きたいと思います。コード例は全てJavaを使用していますが最後に他言語の機能も紹介していますし、考え方自体は他の言語にも適用できるかと思います。 また、文章の書き方が定まっていないので途中で文章が変わったりと読みにくかったらすみません。一応、週一で更新することを先週辺りから始めましたので、その内安定すると思いますからそれまで我慢してお待ちくださいw 書かなきゃいけない記事の宿題や自分の知識もある程度溜まってきましたしね^^; 【追記】 まとめ→並行処理の助けとなる考えへ変更 シンプル=とにかくメソッドを細かくわけて短いものにする的な意味にとれるという指摘を受けましたので補足を追記 並列処理と並行処理の違

    並行処理についての個人的思考のまとめ -処理の同期化編- - Akinekoの日記
  • 1