No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 863 | 864 | 865 |...| 1252 | 1253 | 1254 || Next»

3000キロ

自転車のオドメーターが3000キロを突破してた.記録によると2006年4月28日に手元に来たらしいから,4年半でようやく3000キロ達成.

もう一つの軽い折りたたみの方は930キロだった.こっちは2年弱だった気がする.

とりあえず,平均で年に850キロ程度は走っているらしい.1日平均にすると2.4キロなので大したことない距離だなぁ.平日毎日14キロ走って学校通ってた頃が懐かしい.

TeX で普通に記号を書きたい

\textbackslash, \textasciitilde, \textasciicircum, \textdollar, \textasteriskcentered など.

忘れた頃に必要になるのでメモっておく.

lastprivate の罠

OpenMP の parallel for でローカルの値を外に持ち出す指定のひとつ lastprivate の意味を間違って覚えていると罠にハマる.last private であって last assigned private ではなかった.

下のようなプログラムを書いた.いつでも 2 が表示されて欲しい,つまり,lastprivate指定の変数は最後に代入された値を外に持ち出してくれると期待していた.

#include <omp.h>
#include <iostream>
 
struct mystruct {
  int f;
  mystruct() : f(-1) {}
  mystruct(int f) : f(f) {}
};
 
int main(int argc, char *argv[])
{
  mystruct ms(1);
#pragma omp parallel for lastprivate(ms)
  for(int i = 0; i < 4; i++) {
    if(i == 2) {
      mystruct msi(2);
      ms = msi;
    }
  }
  std::cout << ms.f << std::endl;  
  return 0;
}

が,実行してみると以下のような結果になった.

> OMP_NUM_THREADS=1 ./lastprivate 
2
> OMP_NUM_THREADS=2 ./lastprivate 
2
> OMP_NUM_THREADS=3 ./lastprivate 
2
> OMP_NUM_THREADS=4 ./lastprivate 
-1

何かというと,lastprivate指定の変数は最後のプロセスの持つローカルな値をグローバルにコピーしてループを終了する,という仕組みであったと.確かにOpenMPの仕様にはそう書いてあるし,逐次実行時に最後に実行される反復で値を代入しない場合にはオブジェクトの初期値になっちゃうよ,とも書いてある.上のプログラムでの最終反復(i = 3)では変数 ms に値が代入されないため,その初期値(-1)になってループ終了と.

うーん,find みたいに最後に条件を満たすインデックスを探すとかいうループすらもOpenMPだと簡単に書けないのか… (FORTRAN なら MAX での reduction 指定ができるので可能だけど).

lastassignedprivate とかいうディレクティブの方が使い勝手が良いと思うのは気のせいだろうか? 変数についてフラグ一個持てば直ぐに実装できるのに… とりあえず OpenMP の reduction の制限がきつすぎるのが良くない.

何度パスワードを正確にタイプしても受理されないときは

キーボードレイアウトが別物になっている.

英語配列とJIS配列がいつの間にか変わっていたので記号を混ぜたパスワードの入力でコケまくった.なぜに配列が変わってしまったのか分からんのが恐いけど…

ああ,リモートデスクトップ接続したときに別のキー配列のマシンだったからか(そして無理やり切断した).ほんとかどうか今度試してみよう.

inSSIDer 2

無線LANの調子が悪いのでチャンネルの使用状況を見てみようかと久々に使ってみた.

で,1年前くらいには我々のチャンネルに干渉するのは無かったのだけど… さっき見てみたらもろ被りとかが沢山.

はぁ

ミスった

解約の日付を1ヶ月書き間違えて無駄に金を消費した気がする.8と9って似てるよね… 

«Prev || 1 | 2 | 3 |...| 863 | 864 | 865 |...| 1252 | 1253 | 1254 || Next»
Search
Feeds

Page Top