Core 2 Duo + Vista + Cygwinで不可解な挙動?
Vista上で、前にプロジェクトで作った自然言語処理のプログラムを動かしてみたら、何故か2つのCPUを満遍なく使い始めた…!でも総CPU時間はきっかり50%まで。ということは常にCPUは1つしか使ってなくて、しかも凄いスピードで2つのCPUを行ったり来たりしてるということか。そんなことしたらL1キャッシュが無駄になりまくって激烈に遅くなりそうなんですけど。L2キャッシュで受け止めるからそんなに速度低下せんでしょ、ってことでVistaはこういうスケジューリング規則やったりするんやろうか?
2.4GHzのCore 2 Duoでこの挙動を示したんで、1コアのVistaではどうかとAthron64 2.0GHzのマシンで走らせてみたが、速い速い。しかし納得いかん。これはCygwinかましてるからなんやろうか?*1だとすればMinGWでコンパイルすれば、あるいは…?
他にもLinux上での挙動も取ってみたりする予定。あとできればOpenMPで並列化もしたい。