タグ

smpに関するmasterqのブックマーク (80)

  • repa

    Repa (REgular PArallel arrays) Repa provides high performance, regular, multi-dimensional, shape polymorphic parallel arrays. All numeric data is stored unboxed. Functions written with the Repa combinators are automatically parallel provided you supply +RTS -Nwhatever on the command line when running the program. Repa means "turnip" in Russian. If you don't like turnips then this library probably

  • Network Attached Processing の Pauseless GC

    更新履歴 (2005.11.18) 脚注*2を加筆。 (2005.11.17) 文章を推敲。 (2005.11.14) NMT bit の read barrier について嘘を書いていたので修正。 目次 前置き Pauseless GC Marking Phase Relocation & Remap Phase おしまい 参考文献 Azul Sysmtes (米日) は Java や .NET に特化した専用計算機 Network Attached Processing (NAP) を提唱し、 製品として Azul Compute Appliance を開発した。 Azul Compute Appliance は、 すでに稼動中の Solaris/Linux の J2SE/J2EE システムの Java VM を Azul Systems が提供するスタブ JVM に置き換えるだけで、

    masterq
    masterq 2011/02/28
    NMT bit チェック付きロード命令。TLB拡張が必要な理由がまだわからない。。。が、VMがSEGVをキャッチしたい理由がわかったような。
  • だいありー

    大晦日なので,プロセッサを作ってみたい夢を語ってみる. メニーコア向け(100以上) 出来るだけ簡単・小さい できるだけテキスト(バイナリ)も小さい方がいい 同期の仕組みとかどうするかな GPGPU とか,どうなってるのかな? よくしらない メモリ階層を意識させる設計 ローカルメモリをもつ 外部メモリとの通信はどうしようかな 割り込みとかどうしよう コンテキストの保存,復帰とか 保護とかどうするかな で,スタックマシン再びってのはどうなんだろうなぁ,とずっと考えてる. プロセッサはえらい簡単になる テキスト領域は小さい 「スタック」というローカルメモリがある.自然! コンパイラは,出来るだけローカルメモリ内に納めるようにがんばる やっぱり,外部メモリとのインターフェースはよくわからん 他のプロセッサとの同期とかどうすんのかね スタックがあふれたらどうすんだろ 関数呼び出しのタイミングで,あ

  • Linuxカーネル2.6.36登場 - AppArmorがメインラインに取り込み | エンタープライズ | マイコミジャーナル

    Linus Torvalds氏は10月20日(米国時間)、Linuxカーネル 2.6.36を公開したことを発表した。64コアCPUのTirelaアーキテクチャのサポート、新しいファイル通知インタフェースのfanotifyのマージ、AppArmorのメインライン採用など、多くの機能追加および変更が実施されている。 2.6.36で実施された主な変更点は以下の通り。 Tirelaアーキテクチャのサポート 新ファイル通知インタフェース「fanotify」 KMSとKDB(カーネルデバッガ)の統合 スレッドプールマネージャによるワークキューの管理 Intel Core i3/5のインテリジェントパワーシェアリングのサポート CIFSにFS-Cache(ローカルキャッシュ)を追加 デスクトップ周りの不具合の改善 (USBストレージへの書き込み速度の向上など) OOM(Out of Memory Kil

    masterq
    masterq 2010/12/06
    Tirelaサポートが入ったんだ。。。
  • 【レポート】ISSCC 2008 - Tilera、タイルプロセッサ「TILE64」の詳細を発表 | エンタープライズ | マイコミジャーナル

    米ベンチャーのTileraは、ISSCC 2008にて同社のタイルプロセッサ「TILE64」の詳細を発表した。TILE64の発表は昨年のHotChipsに続いて2回目となる(講演番号4.4:TILE64 Processor: A 64-Core SoC with Mesh Interconnect)。 タイルプロセッサは最近のCPUアーキテクチャ開発の流れの中で新しい視点をもたらしている。コアを沢山実装しているが、その質はデータフローモデルをベースにしたメッシュネットワーク上のコア間コミュニケーションにあり、この点でマルチコアとは異なるコンセプトのアーキテクチャだ。米国を中心に研究が進められ、MITの「RAWプロセッサ」、テキサス大学の「TRIPS」などが挙げられる。昨年のISSCCでIntelが80タイルプロセッサを発表、その後「Larrabee」というコードネームが与えられて開発が進

  • 近未来的並列 LL

    The document appears to be a collection of messages and links posted on a forum discussing various programming languages and parallel computing topics, including threads, actors, and memory walls. References are made to languages and technologies like Erlang, Go, Java, Haskell, and Intel's Single-Chip Cloud Computer. The posts also discuss parallelism approaches on different platforms and applicat

    近未来的並列 LL
    masterq
    masterq 2010/10/17
    メニーコアがメインCPUに来る時代は2020になって来るのかなぁ。 アルゴで並列化を考えていても、もうラチがあかないんではないだろうか。 cudaみたいなのをメインCPUでやりたくはないなぁ。
  • じゃあ、Linuxのネットワークスタックはどうなのん? - syuu1228's blog

    この記事の続きになる訳だが、いくらSolaris最強って言っても、大手メーカーがこぞってつつき回して性能改善したり機能追加したりしてるはずのLinuxで何も対策が打たれてない訳が無いよね。じゃあどうなってるんだろう、って話。 例によって、Linuxとか全ッ然知らないので、間違ってたらツッコミ下さい。 ポーリングとパケット処理のパス 殆どここで解説し尽くされてる。 Linuxにも動的ポーリングの実装(Solarisで言ってる動的ポーリングと同じものとは限らないが…)があって、NAPIとか呼ばれてるらしい。 NAPIを実装するドライバでは、こんな手順で受信処理を行ってる。 ハードウェア割り込みを受け、割り込みハンドラを起動 ハードウェア割り込みを禁止、ポーリングをスケジュール ソフトウェア割り込み経由でNAPIのポーリングルーチンを起動 ドライバにポーリングを指示 この時、適切な性能を確保する

    じゃあ、Linuxのネットワークスタックはどうなのん? - syuu1228's blog
  • Windows Azure : Windows Azure Joins Windows Server in a New Organization: Server & Cloud Division

    In Visual Studio 2022 17.10 Preview 2, we’ve introduced some UX updates and usability improvements to the Connection Manager. With these updates we provide a more seamless experience when connecting to remote systems and/or debugging failed connections. Please install the latest Preview to try it out. Read on to learn what the Connection ...

    Windows Azure : Windows Azure Joins Windows Server in a New Organization: Server & Cloud Division
    masterq
    masterq 2010/07/15
    Dryad はデータ並列(Data-Parallel)なプログラム実行を支援するため、プログラマーに対し、コンピューターのクラスターやデータセンターのリソースの使用を提供するためのインフラストラクチャです。 Dryad を使用するプログ
  • XLsoft エクセルソフト : マルチスレッド・アプリケーション開発のためのインテル・ガイド

    開発ツールスイート インテル® oneAPI ベース・ツールキット インテル® HPC ツールキット インテル® レンダリング・ツールキット インテルの AI ツール クラウド・プラットフォーム インテル® Tiber™ デベロッパー・クラウド コンパイラー インテル® oneAPI DPC++/C++ コンパイラー インテル® Fortran コンパイラー インテル® Fortran コンパイラー・クラシック NVIDIA*/AMD* GPU 向け Codeplay プラグイン パフォーマンス・ライブラリー インテル® oneMKL インテル® IPP インテル® oneTBB インテル® oneDAL インテル® MPI ライブラリー 分析、解析ツール インテル® VTune™ プロファイラー インテル® Inspector インテル® Advisor インテル® Trace Anal

  • さやいんげんの技術 MEMO irqbalanceサービスについて

    1.irqbalance概要 FedoraやRHEL,Suseなど多くのLinuxディストリビューションに標準実装されているデーモンで、マルチCPU環境において、IRQ割込み処理を複数のCPU間で負荷分散させることを目的としています。 2.詳細 Linux Kernelはデフォルトの状態では、CPU0のみでIRQ割込み(ハードウエアからの割込み要求)の処理を行います。しかしそれではIRQ割り込みが頻繁に発生する場合CPU0に負荷が偏りパフォーマンスが劣化する可能性があります。そこでマルチCPU環境でにおいてirqbalanceを導入することで、2nd CPU以降も割り込み処理を行えるようになります。 irqbalanceは、10秒毎に各CPUのIRQ割込み処理負荷状態状態に応じ、各CPUへのIRQ割込み処理の再配置をおこないます。CPUのIRQ割込み処理負荷状態は"/proc/in

    masterq
    masterq 2010/05/28
    irqbalanceは、10秒毎に各CPUのIRQ割込み処理負荷状態状態に応じ、各CPUへのIRQ割込み処理の再配置をおこないます。CPUのIRQ割込み処理負荷状態は"/proc/interrupts"から算出しています。またIRQの再配置は、"/proc/irq/[IRQ番号]/smp_affin
  • ABA問題 - Wikipedia

    この記事には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2023年1月) ABA問題(英: ABA problem)とは、マルチスレッドプログラミングにおいて同期化の過程で発生する問題であり、ある記憶域を二回読み出し、二回の読み出しが同じ値であることを「変更がない」とみなすことにしたとき、二回の読み出しの間に別のスレッドが値を変更し、他の作業を行った後また元の値に戻すと、最初のスレッドが誤って「変更がなかった」とみなしてしまうというものである。 ABA 問題は、複数のスレッドや(or プロセス)が共有されたメモリにアクセスする場合に生じる。下記のイベントの流れは、ABA 問題を発生させる。 プロセス が共有メモリから値 A を読み出す はプリエンプトされ、プロセス が

    masterq
    masterq 2010/05/12
    CAS命令を使っても魔法は起きない、ということ。 もしくはSMPの恐怖の一つ。
  • Omicron 同期プリミティブ

    同期プリミティブ 同期プリミティブで最も重要なことは,実行単位から見て処理がアトミック(不可分)であることである.OS は他のタスクに処理が中断されることがないプリミティブを提供するし,(共有メモリ型)マルチプロセッサを考慮したプロセッサは実行サイクルが不可分である命令を提供する.つまり,クリティカルセクション内では,それぞれ一つのタスク,もしくはプロセッサだけが実行可能になるよう排他制御される. タスク間の同期 セマフォ,ミューテックス,スピンロック,モニタ,select (Unix) など. プロセッサ間の同期 古典的には TAS (Test-and-Set) または TSL (Test-and-Set-Lock)と呼ばれるプリミティブが提供されてきたが,最近のプロセッサではロックフリーなアルゴリズムをサポートするために CAS (Compare-and-Swap) や ll/sc

    masterq
    masterq 2010/05/12
    x86のxchg命令などの同期のための命令について。 まぁこれは一般常識。
  • リード・コピー・アップデート - Wikipedia

    リード・コピー・アップデート(read-copy-update、RCUと略記)とは、オペレーティングシステムにおいて一種の排他制御[note 1]を実装する同期機構であり、リーダー・ライターロック(英語版)の代替手段として使われることがある。参照において待ち状態が生じず、極めてオーバーヘッドが低い。しかしRCUにおけるデータ更新は、既存の参照者のために古い版のデータ構造を保持しつつ行うため、時間と空間(メモリ)をより多く必要とする。古い版のデータ構造は、既存の参照者が全てアクセスを完了した後で回収される。 RCUでは「参照側クリティカルセクション」という概念があり、通常 rcu_read_lock() と rcu_read_unlock() で挟まれた部分がそれにあたる。参照側クリティカルセクション内にない文は「不活性状態」と呼ばれ、RCUで保護されたデータ構造への参照を保持することは許さ

    masterq
    masterq 2010/04/02
    RCUはデータ構造が複数のスレッドに共有されているときに使われ、特にそのデータがよく参照(リード)されて滅多に更新(アップデート)されない場合に有効である。 あるスレッドがそのデータ構造を読みたい場合、そ
  • dvipdfmxp / DVIからPDFへの変換を並列に行うシェルスクリプト

    背景 Omni Graffleなどで作った影の付いた図を、TeXでincludeしたい時がありますよね。 この時、dvipdfmxコマンドを用いてDVI -> PDFの変換をすると、非常に時間がかかることがあります。 図のサイズ等をいじれば多少は処理時間が少なくなりますが、図が汚くなってしまうなんてことも。。。 図の方は変化させずに速く処理を終える方法はないのでしょうか? dvipdfmxを動かしている時にCPU使用率を見てみましょう。 どうやらdvipdfmxは1コアしか使っていないみたいですね。 ということは、複数のコアで処理を行えば速くできそうです。 (え?1コアしかないCPUを使っている? うーん、残念ながらそういう人にはこのページの内容は役に立たないかも。。。) ということで、複数のコアに並列にdvipdfmxの処理をさせるシェルスクリプトdvipdfmxpを 作ってみました。

  • http://www.lemis.com/grog/SMPng/Singapore/slides.pdf

  • マイクロソフトが研究中の分散OS「Barrelfish」、スナップショットを公開

    Microsoft Research、スイスのETH Zurich Systems Groupが共同で「Barrelfish」と呼ばれる分散OSの論文やスナップショットを相次いで公開したことが海外のいくつかのニュースで報じられています。 Microsoft and European researchers deliver a snapshot of multikernel 'Barrelfish' OS | All about Microsoft | ZDNet.com What Windows 8 perhaps should be: Microsoft's multi-kernel OS project | Software News - Betanews Microsoft in a Post-OS World | Blogs | ITBusinessEdge.com Barrel

    マイクロソフトが研究中の分散OS「Barrelfish」、スナップショットを公開
    masterq
    masterq 2009/09/28
    ヘテロジニアスコアそれぞれに別個のOS nodeを載せて、その上でアプリを実行するらしい。
  • 並列プログラミング(その2) : DSAS開発者の部屋

    3.Memory Ordering シングルプロセッサのマルチスレッドでは、volatile変数をフラグにして簡単な同期を書くことができました。 例えば、次のような感じです。(コンパイラはvolatile変数へのアクセスの順序を入れ替えないものとします) volatile int done = 0; volatile struct { int foo; int bar; } foobar; void writer(void) { foobar.foo = fizz(); foobar.bar = bazz(); done = 1; } void reader(void) { int foo, bar; while (!done) sleep(1); foo = foobar.foo; bar = foobar.bar; } これは、マルチプロセッサ環境では上手くいかないことがあります。今時

    並列プログラミング(その2) : DSAS開発者の部屋
    masterq
    masterq 2009/05/25
    x86のメモリフェンスを使った実行順制御について。
  • pigz - Parallel gzip

    A parallel implementation of gzip for modern multi-processor, multi-core machines Welcome to the pigz home page. You can download the latest source code right here: pigz source code version 2.8 (19 Aug 2023) in tar.gz format (118K, SHA-256 checksum eb872b4f0e1f0ebe59c9f7bd8c506c4204893ba6a8492de31df416f0d5170fd0, GPG signature) Latest version of pigz and its signature (version-independent links) p

    masterq
    masterq 2009/04/21
    マルチプロセッサ版gzip。 ふつーにpthreadを使って実装しているようだ。
  • 【レポート】FreeBSDロックの秘密は"マルチコアでパフォーマンス" (1) すべてはマルチスレッドプリエンプションへの要求から始まった | エンタープライズ | マイコミジャーナル

    2009年3月12日から15日までの4日間、東京において「AsiaBSDCon 2009」が開催された。誌では、同カンファレンスの中から特に興味深いセッションをピックアップしてお伝えする。 FreeBSDロック処理の背後にあるコンセプト - よく理解して使うこと Attilio Rao氏 - The FreeBSD Projec マルチコア/プロセッサ化に対応すべく、FreeBSDはカーネルからサブシステムに至るまで改善に取り組んできた。このFreeBSDロック処理の取り組みの背後には、開発者に対して「ロックを使うところでは問題や動作をよく理解したうえで、適切で正しいプリミティブを使うこと」といったように、ロックを使う側でロック問題への理解やカーネルが提供しているロック手段といった2つの物事への理解を求めている。 AsiaBSDCon 2009ではAttilio Rao氏がFreeBSD

    masterq
    masterq 2009/03/30
    FreeBSDでのロックの種類と使い方について。
  • NetBSD-5.0BETA/macppcのSMP実装を駆け足で - syuu1228's blog

    i386のSMP実装がどうなっているのかではなく、一般的なSMP実装がどうなっているのかについて調べたいので、macppcも眺めてみる。 void cpuattach(parent, self, aux) struct device *parent, *self; void *aux; { struct cpu_info *ci; struct confargs *ca = aux; int id = ca->ca_reg[0]; ci = cpu_attach_common(self, id); if (ci == NULL) return; cpu_attach_common()を呼び出している。 struct cpu_info * cpu_attach_common(struct device *self, int id) { struct cpu_info *ci; u_int p

    NetBSD-5.0BETA/macppcのSMP実装を駆け足で - syuu1228's blog
    masterq
    masterq 2009/02/27
    ソース読みのとっかかりとして。