BOOST_MPI_HOMOGENIUS を定義してシリアライズを高速化 クラスター内の CPU が全部同じアーキテクチャであれば、コンパイル時に -DBOOST_MPI_HOMOGENIUS オプションを付け加えてコンパイルすると MPI_PACK, MPI_UNPACK しないでバイナリイメージのまま送ってくれるので速くなる。 非プリミティブ型の Isend に注意 Boost.MPI で複雑な型のオブジェクトを送るときには Boost.Serialization でバイナリ列にシリアライズしてから送られるようになっています。 これが何を意味するかというと、Boost::Isend というのは実はシリアライズ後のバイナリ列のサイズしか相手に送らなくて、Boost::Wait* を呼び出して Isend が終わったのを確認した後でシリアライズしたバイナリ列を送り始めます。 これを忘れてい
mutexはスレッド間の排他処理をするための機構だが,一般的なthreadライブラリのデフォルトのmutexには大きな問題がある.あるmutexを既にlockしているthreadが再度同じmutexをlockしようとするとブロックしてしまうのだ.たとえば,thread bufferの例で,emptyを判定する部分を別メソッドにして,こちらもlockをかけるように書き直してみる. class buffer { list<int> queue; boost::condition_variable cond; boost::mutex mut; public: bool empty() { boost::lock_guard<boost::recursive_mutex> lock(mut); return queue.empty(); } ... int pop() throw(out_of_
Boostのライブラリは他のBoostのライブラリを利用して実装されていることが多いです。AsioはThreadを利用していますし、MPLはその他の色々なライブラリの実装の助けになっています。そういった関係を抜き出してみました。ただの暇つぶしで特に意味はありません。まあ、生きてるサンプルコードとして使えるかもしれません。 抽出方法 Boostのライブラリはそれぞれディレクトリに分けられているので、ディレクトリ=ライブラリとして、ディレクトリ内のすべてのファイル(.hpp)を走査してincludeしているファイルを元に依存関係を抜き出しました。結構適当です。ソース(.cpp)は見ていません。 ディレクトリ単位で見ているので、Math系のライブラリなど同じディレクトリに実装があるライブラリはひとまとめにされます。 ただし、AnyとかArrayは1ファイルだったので、そういうのは一部特別扱いして
2009/12/12 Boost.勉強会 プレゼン資料 ppt 第2版. 初版の明らかな不手際を最低限だけ修正. プレゼン発表の録画は http://bit.ly/6yjSkz です.Read less
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
sample #include <boost/progress.hpp> int main() { boost::progress_timer t; unsigned int a=0; for( unsigned int i=0; i<10000; ++i ) for( unsigned int j=0; j<60000; ++j ) a += i; // 適当に時間のかかりそうな処理 return 0; } // tのデストラクタが呼び出され、ここで時間表示 出力例 2.08 s etc C++の特徴として、「自動変数はスコープが終わるところで、 デストラクタが呼び出される」というのがあります。関数のどこから return や break で抜けようが、 空の彼方へ例外で飛んでいこうが必ず呼び出されるので、 終了処理をデストラクタに任せておくと、綺麗なコードを書けることがよくあります。
"Image dans le néant" by gelinh boost.GILは凄い!開発者の頭の良さがビシビシと伝わってくる! ということで、今回はGILに関しての紹介記事を書こうと思います。 概要 あなたは画像処理のエキスパート。顧客の依頼で、8bitのRGB画像を処理するアルゴリズムを記述していたとします。ところが対象となるデバイスの仕様を調べていた際に、実はRGBA画像にも対応させなければいけないことが分かりました。面倒だと思いながら書いていた矢先、さらにBGRやABGR,さらには16や24bitにも対応したアルゴリズムを記述しなければならないことが判明しました。なんということでしょう…これらの画像すべてに対してアルゴリズムを書くなんて、とてもじゃないですがやってられない。やめてくれ!って感じです。 boostに付いてくるGILを用いることで、画像に対する操作をよりジェネリック
After spending most of my waking time on Stack Overflow, for better or for worse, I've come to notice how 99% of the C++ questions are answered with "use boost::wealreadysolvedyourproblem", but there must definitely be a few areas Boost doesn't cover, but would be better if it did. So what features is Boost missing? I'll start by saying: boost::sql (although SOCI should try to become a legal p
sample #include <iostream> #include <string> #include <boost/program_options.hpp> using namespace std; using namespace boost::program_options; int main(int argc, char* argv[]) { // オプションの設計 options_description opt("オプション"); opt.add_options() ("help,h", "ヘルプを表示") ("op" , value<string>(), "演算の種類(add,sub,mul,div)") ("lhs,L", value<int>()->default_value(100), "左") ("rhs,R", value<int>()->default_value
Boost.Optional Must Go - 野良C++erの雑記帳 Boost.Optional Must Go (2) - 野良C++erの雑記帳 最近、何回かに分けて、 Boost.Optional について、(細かい)不満を日記に書いてきました。 これは別に Boost.Optional が嫌いだから不満を書いた訳ではなく、むしろ その逆、 Boost.Optional が便利な分、逆に不満点が目立つので書いていたわけですが、 よく考えたら、 Boost.Optional の便利さを、纏まった記事で書いていないなー、 と、そう思い至ったので、この辺で Boost.Optional を徹底的に推奨する記事でも書いてみようかな、 というわけで、さんざん既出なネタばかりですが、折角なので書いてみることにしましたよ。 冒頭に挙げた以外で参考になるような記事は、この辺でしょうか: C++
MPL もそうとうでかいので一回で紹介しきるのは厳しそうなので、 何回かに分けて紹介できればなあ、と思います。 GameNum を MPL で書き直す template library を作る で紹介した、 GameNum ですが、 これは、テンプレートメタプログラミングの初歩の内容を含んでいたので、 MPL で書き直したらどうなるか、というのをやってみます。 まあ、最初にやってみるネタとしては適当かなあ、とか思いまして。 gamenum のシフトをコンパイルタイムに解決する部分、 template <bool equal_, bool leftLarge_, int leftShifts_, int rightShifts_> struct ConvertHelper_; template <int leftShifts_, int rightShifts_> struct Conver
Boost の一部ながらも「実用的」すぎるため、とかくテンプレートメタプログラミングを愛好する諸兄から黙殺されてきた不幸のライブラリ、Boost.Python。Boost.勉強会でこいつの魅力を伝えようと思ったのだけど、時間の都合で無理だったので、簡単に紹介してみたい。 Boost.Python の基礎 Boost.Python は C++ のクラスや関数をラップする Python モジュールを恐ろしく簡単に書けるようにする、強力なライブラリである。 特に、Pyrex や Cython と比べて何がうれしいのかというと、 Python側にいちいちラッパ関数を書かなくてよい (テンプレートにより自動的に定義される) コンバータを登録することで、Python⇆C++の型の透過的な変換が容易にできる C++ のクラスを分かりやすい形で Python のクラスとして見せることが可能 といった点が挙
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く