私はハライドを介して手を調整したc関数を再作成しようとしていました。これは、ソース画像の垂直走査線で行われる一連のヒストグラムである。私はソースイメージを反復するために1次元RDomを使用しています。私はcompute_atでそれをスケジュールすることができますのでプリフェッチスケジューリングをハロゲン化物更新ステージ
RDom reductionY(0, input.height());
parade(x,y,c) = Halide::cast<uint16_t>(0);
parade(x, input(x, reductionY, c), c) += Halide::cast<uint16_t>(1);
局所性を高めるために、私は別のFUNCでRDOMをラップしています。
wrapper(x,y,c) = parade(x, y, c);
parade.update(0).reorder(c, reductionY, x);
parade.update(0).split(x, x_outer, x_inner, THREADWIDTH);
parade.compute_at(wrapper, x_outer);
この(プラス私はこの質問のために取り除かきたいくつかのベクトル化/並列化)密接に私の手にチューニング元に一致します。私がスケジューリングする方法を理解できないという元の利点の1つは、更新(0)ステージの入力から各垂直ラインの最初の読み取りをプリフェッチすることです。私が予定している場合
parade.update(0).prefetch(inputParam, x_inner, 3);
それは読み込むすべてのピクセルを先読みしているようですか?私の希望は最初のピクセルを読み取るための単一のプリフェッチを発行することです。一見