No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1158 | 1159 | 1160 |...| 1342 | 1343 | 1344 || Next»

ACM/ICPC お手伝い その2

風船運びと後片付けがメインの仕事.今年の問題はA, B が異常に簡単だったので開始直後はこれらが出まくって忙しかった.でもこのスタートのラッシュを過ぎたあとはゆったりと風船を補給してただけ.ついでに途中で元気のなくなった風船の交換もあったけど (例年こんなのあったっけ?)

あとは飾りのための風船を大量に膨らませたのは面白い仕事だった.というか他の人の仕事を奪ってしまったのだけど.とりあえず遅めの作業を見ていたら思わず手を出していた…

そういやコーチと選手が廊下やトイレで接触しないように見張る仕事もあったなぁ.もう少し場所のアレンジを考えてほしいと思う.コーチは二階席から見るようにするとか.そもそも仕事マニュアルに書かれてなかったなので接触の可能性に後で気づいたんでしょう.今回の大会は全体的にスタッフ陣のアレンジが甘い印象を受けた.まあ大変なんだろうけど.

ACM/ICPC お手伝い その1

裏方の仕事って結構大変(面倒)だったんだなぁと実感.英語の受け付けも結構あたふたしてた気がする.シーツ配りもそれなりに重労働だったかな.

それはさておき,色々な部分でスタッフの準備というか対応が甘い点が多かった気がする.案内が無くて分かりにくい,効率の悪い作業をする,ジャッジとの間のプロトコルがおかしい,とか.ついでに名札にチーム番号書いといてほしい.変な札にだけ番号書いて渡すってのはどうかと.とにかく色々な部分の情報を取っといてマニュアルにできるものはしてしまえと思う.そうすりゃ回を重ねるごとに改善されていくだろうから.とくにPCの用意の仕方とか受付とかの対応とか風船の用意の仕方とかどうにかしてほしい.

蛇口に負ける

頭をぶつけたら血が…  蛇口ごときに負けるとは情けない.

住民票記載事項証明書?

住民票と違って証明願に書いた事項が住民票と同じことを証明するものらしい.ふつうはもらって来いと指令するところが様式を用意するようだけど… 特定の様式ないけどもらって来いと言われた場合どの事項が必要なのやら? とりあえず必要項目を聞いてみるか… 二度手間だ.

Putty を使いこなせない

キーで認証するのがうまくいかない.普通にプライベートキーを変換して認証キーの設定をしただけなのに.何が悪いんだ?しばらく格闘するか.

gcc の OpenMP で遊ぶ

とりあえずやってみることその一.演算子のオーバロードがダメと言われても試したくなるのが人間.

struct DOUBLE {
    double x;
    double y;
    DOUBLE() : x(0), y(0) { }
    DOUBLE(int d) {
        x = d;
        y = d;
    }
    DOUBLE operator+(const DOUBLE& a) const {
        DOUBLE z;
        z.x = x + a.x;
        z.y = y + a.y;
        return z;
    }
};
DOUBLE a1(int n, DOUBLE *a)
{
    int i;
    DOUBLE r = 0;
#pragma omp parallel for reduction(+:r)
    for(i = 0; i < n; i++) {
        r = r + a[i];
    }
    return r;
}

コンパイルしたら

 error: 'r' has invalid type for 'reduction' 

と文句を言われた.だめらしい.

次,中途半端にオーバーロードしてみる.

struct DOUBLE {
        double x;
        double y;
        DOUBLE() : x(0), y(0) { }
        DOUBLE(int d) {
                x = d;
                y = d;
        }
};
 
double operator+(double a, DOUBLE b) 
{
    return b.x - a;
}
 
double a1(int n, DOUBLE *a)
{
    int i;
    double r = 0;
#pragma omp parallel for reduction(+:r)
    for(i = 0; i < n; i++) {
        r = r + a[i];
    }
    return r;
}

コンパイルしても文句言われない.でも演算子の結合性がないので当然ながら結果はおかしい.各スレッドでの結果をマージする部分では通常の + になってしまうので当り前だけど.

ついでに,次の無意味なオーバーロードは正しい計算がされる.

double operator+(double a, DOUBLE b) 
{
    return a - b.x;
}

結局,全要素に - を map して + で reducction するだけだから.

結論:reduction に演算子オーバーロードはやっぱり使えなかった.でもこうなると行列を for 文で掛けまくるとかいう操作は並列化してくれないのかぁ.行列積自体は結合的だけど展開した式での各要素は reduction の式にならないし.使えん.

«Prev || 1 | 2 | 3 |...| 1158 | 1159 | 1160 |...| 1342 | 1343 | 1344 || Next»
Search
Feeds

Page Top