タグ

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

  • PySparkの実装サンプルと実行方法 – rinoguchi's techlog

    最近Sparkを触る機会があって、少しだけ勉強したのでメモがてら残しておきます。 Sparkの分散処理の仕組み Sparkとは 高速で汎用的な分散処理システム 分散データ(RDD)をDISKを介さずにメモリ上に持つので、Hadoopの100倍ぐらい高速 Java, Scala, Python, RなどのAPIを提供 Spark SQL, MLlib, GraphX, Spark Streamingなどのリッチなツールを提供 分散処理システムの構成要素 画像は、こちらからお借りしました。 Driver Program Master Nodeで実行される起点となるプログラム SparkContextを作成し、RDDを生成して、Taskを実行していく SparkContext Sparkの色々な機能へのエントリーポイント ClusterManagerを通じてクラスターを操作する DAG Sche

  • Goとマルチコアスケール実装

    マルチコア化の未来予測 半世紀前にSF映画「2001年宇宙の旅」に登場するコンピューターHAL-9000が並列コンピューティングの未来を示しました。マルチコアで構成されたコンピューターの物理コアを取り除いてもすぐにクラッシュせずに性能ダウンして処理が継続するという演出がありました。 当時ですらシングルコアコンピューティングの限界が予想されていて、現状のコンピューティングがマルチコア化しているという未来をしっかり予測できていたことがわかります。 演出はコア数に応じてコンピューティング性能がスケールしていることを表現しています。これはマルチコアスケールするソフトウェア実装の未来を示していたと思います。 シングルコア性能向上の頭打ち 2003年以降あたりはCPUの動作周波数が伸び悩み出したところ。 https://queue.acm.org/detail.cfm?id=2181798 より その

    Goとマルチコアスケール実装
  • Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita

    最近Pythonでオーケストレーション層(BFF)のアプリケーションを書く機会がありました。 Python3.4からはasyncioが導入され、I/Oバウンドな処理はシングルスレッドでも効率的に捌けるようになったものの、依然としてCPUバウンドな処理はGILが存在することで、シングルプロセス下では並列処理が制限されます。 このことから言語特性として、CPUバウンドよりもI/Oバウンドな処理を複数捌くことに適していると見ることができます。言語選択の意思決定をする際に重要なファクターとなりますが、そのためにはGILの仕組みを改めて知る必要があると思い、調べてみました。 GIL(グローバルインタプリタロック)とは そもそもGILとは何のことでしょうか。 正式にはGlobal Interpreter Lock(グローバルインタプリタロック)といい、PythonRuby等の言語に見られる排他ロック

    Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた - Qiita
  • Pythonのthreadingとmultiprocessingを完全理解 - Qiita

    現代の主なOSと言ったら、Mac OS,UNIX,LinuxWindowsなどがあります。これらのOSは「マルチタスク」機能をサポートしています。 マルチタスクとは?と思うかもしれませんが、例えばブラウザーを立ち上げて、音楽聴きながら、Wordでレポートを書くというシチュエーションでは、少なくとも3つのタスクが同時進行しています。そして、表のタスク以外に、裏ではOS関連の様々なタスクがこっそり動いています。 マルチコアのCPUで、マルチタスクが処理できるのは理解しやすいですが、シングルコアのCPUでもマルチタスクが可能です。OSはそれぞれのタスクを交替に実行しています。例えば、タスク1を0.01秒、タスク2を0.01秒、タスク3を0.01秒、タスク1を0.01秒......繰り返して実行していきます。CPUは速いので、ほぼ同時進行のように感じます。この交替実行のことをしばしば「並行処理(

    Pythonのthreadingとmultiprocessingを完全理解 - Qiita
  • JavaScriptの非同期処理をできる限り正確に理解する - Qiita

    プログラミング初心者が詰まりやすいポイントとして、非同期処理はよくあげられるかと思います。実際初心者にとっては概念自体もわかりにくいし、なぜか記事によって言い回しやら説明の仕方やらが違うので調べれば調べるほど混乱してきて、心が折れそうになります。 そもそも言語によってシングルスレッドだったりマルチスレッドだったりと仕様は大きく異なっています。それによって非同期処理の仕組みだって異なってくるのに、全てをまとめて説明するのは無理があります。 そこで今回は、言語をJavaScriptに絞り、なるべく公式リファレンスに基づいた解説記事を書いていきたいと思います。 この記事によってなんとなくでも「非同期処理の質」を掴めたら、今後swiftでもPHPでも、他の言語における非同期処理を仕組みを理解することは比較的楽になるかと思います。 できる限り正しい説明を心がけますが、理解が追いついていないせいで間

    JavaScriptの非同期処理をできる限り正確に理解する - Qiita
  • 【Swift】Grand Central Dispatch (GCD)とOperationQueue まとめ - Qiita

    経緯 普段使っているのに全体像があまり見えていないものとして Grand Central Dispatch (GCD)とOperationQueueが 自分の中にあり色々と調べてみました。 調べていけばいくほど新しいことがどんどん出てきて収拾がつかなくなってきたのですが、現時点までの部分でまとめてみたいと思います。 概念の紹介 最初にいくつかの概念について紹介します。 Concurrency 複数のスレッドを用いて行われる同時並列処理のことです。 iOSでは1つのプロセス(アプリケーション)の中で1つ以上のスレッドを用います。 シングルコアの場合 時間で動かすスレッドを切り返す、 コンテキストスイッチという方法を使ってConcurrencyを実現しています。 マルチコアの場合 parallelism(並列処理)を使って同時に複数のスレッドを動かします。 Task(タスク) 実行される1まと

    【Swift】Grand Central Dispatch (GCD)とOperationQueue まとめ - Qiita
  • 1