boost

Boost.勉強会 #11 で発表してきた

Boost.勉強会 #11 東京 - boostjp茨城の山奥に行ったりとか,書類書いてたりとかして1週間も経ってしまいましたが書きます."CilkPlus, TBB, OpenMP 〜 並列プログラミングを支える技術" という大層なタイトルで発表してましたが,つまるところこの辺のライ…

Boost.MPI は実際 MPI_Allgatherv や MPI_Scatterv をサポートできてない

Tutorial - 1.53.0Boost.MPI ドキュメントの "Table 19.5. Collectives" を見てもらえると分かりますが, Boost.MPI では MPI_Allgatherv といった collectives はそれぞれ非 v な collectives でサポートされているかのように書かれています.ちなみに MPI_Al…

Boost.MPI, Serializationで動的確保した配列がメンバに含まれるクラスインスタンスをシリアライズして送る.

できるのかと思ってたんですが, Boost.Serialization のチュートリアルちゃんと読んだら書いてありました.Serialization配列のサイズが分かっていればできそうです.(2013/02/11 追記) 動的確保されたメモリの場合, serialize 関数でメモリ確保は行われないた…

Boost.MPI に MVAPICH2 を用いる

Boost.MPI は MPICH や OpenMPI では Default Configuration が良い感じに走って using mpi するだけで問題ないのですが, MVAPICH2 はコンパイラの名前が異なっているため, そのままでは動きません./tools/build/v2/user-config.jam に以下のように書きます.…

最近気になるもの

大体 CUDA か GPU 関係.Boost.ODEIntが採択されました - Faith and Brave - C++で遊ぼうODEInt は常微分方程式を解くためのライブラリ. 無条件採択されたらしい. Thrust を使用して GPU で計算もできるとかなんとか.書いてるの反復法といくつかなので使い道…

gettimeofday よりも clock_gettime よりも boost.chrono.Clock

実行時間を図るとき、posix 系列なら gettimeofday で実行時間を測っていた。だいたいこんな感じ。 #include <cstdio> #include <sys/time.h> double second() { struct timeval t; gettimeofday(&t, NULL); return t.tv_sec + t.tv_usec * 1e-6; } int main(int argc, char** ar</sys/time.h></cstdio>…

Boost.勉強会 #10 に参加しました

Boost.勉強会 #10 東京 - boostjpもう二日経ったけど書く。色々あったけど、最後に書くとして、各発表の感想。 Boost ライブラリ一周の旅 1.45.0 〜 1.50.0 C++Now! 2012 参加レポート local function については、「あれ、auto でラムダ式を束縛すれば良い…

Boost.勉強会 #9 つくばで発表してきた。

家に帰宅して早速書いてます。Boost.勉強会 #9 つくば - boostjpBoost.Multiprecision について僕が調べてみたことを全部書きました。Boost.Multiprecision (SlideShare)当日の発表では、結構早く進んでしまったので章の区切りごとに質問時間をとってみたの…

今週末は Boost.勉強会で発表してきます

Boost.勉強会 #9 つくば : ATND今週末になりました Boost.勉強会 #9 つくば です。 今回はこのブログでも書いた Boost.Multiprecision について、もっとまともに調べたことを話します。 使い方とか、分かったこととか、ML 読んでの内容とか。GMP, MPFR とか…

Boost.Multiprecision を調べてみた

Faith and Brave - C++で遊ぼう<2012年4月6日に調査>Boost.Multiprecision が、なんとなく良さげなライブラリに見えてきたので、落として調べてみました。ただの調査メモなので、使い方的な入門は書いてないです。 gcc で使いたい どうもテスト環境は Wind…

Boost.ProgramOptions 備忘録

ちょっとコマンドラインでぽちぽちやる必要がでてきて、解析するのがめんどくさいので Boost.ProgramOptions でも使おうと思います。このライブラリはビルドしないと使えない(ヘッダオンリで利用できない)ので、そこは注意して下さい。名前空間は長すぎて泣…

gcc 4.6.2とOpenMPIとBoost.1.49.0をインストールする

ただのメモ書きです。Boost.1.49.0はBoost.MPIも使えるようにしておく。 CentOS 6.2 Core i7 3GHz (多分) 12GB RAM (多分) gcc 4.6.2のビルド 今回は /usr/shareの中にgcc-4.6というディレクトリを掘ってそこにインストール。まず必要な3つのライブラリをイ…

Boost.勉強会 #7 に行ってきました。発表してしまいました。

Boost.勉強会 #7 東京 - boostjpと言う訳で行ってきました。 発表してしまいました。 当初発表する予定なんて無かったんですが、そういえば ネタ帳 - boostjp に書かれていたり、1時間も余ってるし、Boost.Interprocess使ったことない人が多いそうだしでサプ…

MinGWのgccでboost.threadを使う私的メモ

MinGW使って色々やろうと思ったらboost.threadをスタティックリンクできなくて涙目になったのでメモ。 boost.threadのdetailの中に入ってるconfig.hppを弄る方法もあるようなのだが、普通にBOOST_THREAD_USE_LIBを定義しておけばビルドできるそうなのでg++の…

Boost.ipcの有効利用(?)

というレベルではないですが Boost.Property_treeで暗号化したiniファイルを読んでみる - 名古屋313の日記 で暗号化を行うのに一度バッファを作って取るのが面倒だなあ、と思ったのでこれはBoost.ipcのメモリマップドファイルの出番ではないかと思いちょ…

Boost.勉強会# 4に行ってきました

先週の土曜日の話だからまだ大丈夫ですよね。という訳で行ってきました。結構早めについたのでガラガラかなーと思ったらid:nyaocatさんがすでに居ました。早い。 まあ確かにがらがらでしたよね。10時なってましたけどまず発表者の大半が居ない…だと?でもTwi…

Managed Memory Segmentsで動的多態する場合の留意事項

boost.ipcのManaged Memory Segmentsで動的多態を演じたい場合、destroy(_ptr)を呼び出す際、作成時の型を指定する必要があります。つまり抽象クラスの型を指定して、抽象クラスのポインタを渡して、削除することはできません。 namespace ipc = boost::inte…

destroy_ptrでハマる

いや、まさかこうなるとは思ってなかったのでメモ。Managed Memory Segmentsはconstructしたオブジェクトをdestroyする必要があります。これはconstruct方法によっていろいろ選べます。例えばnamed instanceとして作成した場合、destroyを使って名前を指定し…

Managed Memory Segments 小ネタ幾つか

今日は特にネタがなかったので、Managed Memory Segmentsが提供してる機能をいくつか書いておきます。とりあえずManaged Memory Segments上のお話なので前提条件を書きます。変数名はmm_segmentsで、オブジェクトは自動で削除されます。ちなみに、ドキュメン…

Boost.interprocess 解説&備忘録

ただの記事リストです。01:boost.interprocessさん凄いです - krustf の雑記 02:しばらくboost.interprocessネタで書いていこう。 - krustf の雑記 03: 04:vectorstreamの話 - krustf の雑記 05:bufferstreamの話 - krustf の雑記 06:STLもmanaged上な…

いやいやManaged Heap Memoryの方が

Managed Heap MemoryがBoost.interprocess Document P.90に書いてあります。これはstatic buffer領域を必要とせず、予めヒープ上のメモリを確保して利用する形だそうです。使い方はManaged Heap Memoryと同じで構築方法が異なります。 例えば、自前でヒープ…

Managed External Bufferは便利かも?

久しぶりに更新。Boost.interprocessの話です。またもやドキュメントパラパラ見てたら結構使えそうなやつが出てきたのでメモ。 Managed External Buffer "様々な状況でSimpleなオブジェクト、STLと同じようなコンテナや文字列、 あとは何かしらのバッファが…

multi_indexなども使えて便利

ついつい見落としてましたが、interprocessはmulti_indexなどのinterprocess外ですがBoostのライブラリとして提供している一部のコンテナもmanaged memory segmentsを使って作成できるようです。ドキュメントに書いてあるのはmulti_indexとunordered_mapの2…

プロセス間共有用のnamed mutex

interprocessには"named mutex"という名前付きMutex Objectを作成して複数のプロセス間で排他制御を行える機構があります。recursiveなMutexなどありますが、多分interprocessとして特徴的な機能だと思いますので紹介。作り方と最終的な削除方法が面倒ですが…

STLもmanaged上ならば使用可能

[注意] この記事は間違っている可能性が高いですできるのかなーと思っていたんですが、managed上であればsegment_managerを使用したアロケータを作成すればSTLコンテナをそのまま利用できるようです。(じゃあなんで同じようなコンテナがboost.interprocess内…

bufferstreamの話

前回のvectorstreamと同じで、interprocessのstreamsのもう1つ、bufferstreamの話。 bufferstream? "buffer"については皆さんが普段思ってる通りで良いと思います。何かしらのデータを溜めておくための領域。bufferstreamは固定サイズバッファにデータを読…

vectorstreamの話

今日はinterprocessのstreamsの話。vector/bufferstreamと2つあるのですが、今回はvectorstreamだけ。 vectorの定義 interprocessの当該章では"vectorとは要素が連続しているコンテナである"ようです(意訳かも)。std::vectorは言わずもがなですが、std::basi…

offset_ptrの話

最近のネタ4作目ぐらい。Boost.interprocessの様々なクラス内ではoffset_ptrなるスマートポインタが使用されています。よく見るのはoffset_ptrでtypedefしてvoid_pointerなんてされてるところが多いようです。offset_ptrで何ができるかというとずばり、"ポイ…

しばらくboost.interprocessネタで書いていこう。

前回boost.interprocessでオブジェクトをファイル上に作って遊びましたが、どうも配列も作成できるらしいです。こんな感じで。 static const size_t N = 5; // N 個の配列として作成 Type* arr = mfile.construct<Type>("Name")[N](Allocator); // proxyを束縛して</type>…

boost.interprocessさん凄いです

この記事は C++ Advent Calendar 2010 の参加記事です。詳細は以下。 C++ Advent Calendar jp 2010 : ATND 今日はクリスマスですし、みなさんお忙しいと思いますし、それに僕はあんまり変態的な事を書けませんので…。*1 そんな中であまりTwitter上であまり話…