2009-06-01から1ヶ月間の記事一覧

nokogiriを入れてみた

そういえばと思って検索してみたRubyのXML/HTMLパーザライブラリ「Nokogiri」が、実はHpricotよりもイケてるらしい。入れてみた。手元のUbuntu 8.04の環境だとlibxml2とlibxlstの開発用ヘッダファイルが別途インストールする必要があった。 % sudo aptitude …

それでもおかしい並列qsort

segvで落ちる並列qsortについて、どこからともなく神の声が聞こえた。 main()のpはstackにおかないでmallocする、ret1とret2を0以外で初期化する、if (...||...) free(pnext); の行を削除、myqsort()の最後でちゃんとreturn NULL;する、とかすれば多分動きそ…

pthread本

オライリーから出ているPthreadの解説本を通読してみた。前半は割とゆっくり、後半は「そんな議論があるのか、なるほど」と眺める程度に。mutexや状態変数、シグナルを使った同期制御の話とか、スレッドプールの実装例、カーネルとライブラリの実装アプロー…

2つに分けてソートしてからマージソート

与えられた配列を真ん中で2つに分けて、それぞれを並列にクイックソートしてからマージソートするという方針で書いてみた。といいつつ並列化のところだけ後回し。配列が自分の長さを知らないなんておかしいぞと思ったので、arrayという構造体を定義してみた…

pthreadクイックソートは放置することに

pthreadでqsortを並列化するのは、やっぱりうまく行かない。joinなしにすると微妙に結果が並びきっていないので、たぶんタイミングの問題だろうと思って、メインスレッドで以下のようにsleep(1)としてみたら、これがきちんとソートされるではないか。 #inclu…

壊れてた並列クイックソートが直った?

pthreadで並列化したつもりのクイックソートが微妙に壊れていた。 $ ./psort 10 0:3:5:6:9:7:6:6:3:2: --sort-- 0:2:3:3:6:5:6:6:7:9: $ ./psort 20 19:18:7:5:4:8:13:10:17:1:2:7:15:4:10:7:9:6:6:2: --sort-- 1:2:2:5:4:8:13:10:17:19:7:7:15:4:10:7:9:6:6…

クイックソートをpthreadで並列化

クイックソートはソート対象領域をどんどん分割していく方式なので単純に並列化できるらしい。pthreadでやってみた。pthread_createには関数へのポインタと、その関数への引数をvoid型ポインタで渡すようになっている。ということは複数の引数を渡すのって構…

壊れたクイックソート

仕事で海外に出ていて時間があいてしまった。こういうことって一度途切れると中断時間の1.5乗に比例してやる気がなくなる。もっとエントリの粒度を下げたほうがやる気が出そうなので、中途半端でもともかく更新を続けることを優先してみる。最後にやろうとし…

直ったクイックソートとテスト

人間の心理って(って自分の心理だけど)、すごく不思議だ。「そういえばmyqsort.cを書いてみたはいいけど動かなかったなー、何が悪いのか分からんし、どう手をつけていいのかも分からんしなぁ」と思って放置していた。ものすごくイヤーな印象だけが残って、…