問題タブ [stride]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
11452 参照

c++ - C++ でのストライド データのコピー

2 つの配列があり、1 つの配列を別の配列にコピーしたいと考えています。たとえば、私は

の3つの要素ごとにコピーBAて取得したい

「 memcpy の標準のストライド バージョンはありますか? 」という投稿から、C ではそのような可能性はないようです。

ただし、場合によっては、ループ ベースのコピーmemcpyよりも高速であることを経験しています。for

私の質問は; 少なくとも標準forループとして実行する C++ でストライド メモリ コピーを効率的に実行する方法はありますか?

どうもありがとうございました。

編集 - 問題の明確化

a問題をより明確にするために、手元にある 2 つの配列をとで表しましょうb。独自の次のforループを実行する関数があります

ここで、両方とも[]オーバーロードされた演算子 (私は式テンプレート手法を使用しています) であるため、実際に意味を持つことができます。たとえば、

0 投票する
0 に答える
588 参照

python - 中央に配置されたさまざまなサイズのウィンドウに画像を分割します。パイソン

現在、画像を小さなウィンドウに分割しようとしています。これは後で相互相関に使用されます。以下の関数は目的に適しています (window_size はピクセル単位のウィンドウ サイズの長さ (正方形であると想定)、overlap はウィンドウが重なるピクセル数です (32x32 ウィンドウの場合、16 個の重なりは半分の重なりを意味します)。

それはその目的のためにうまく機能します。ただし、現在、2 つの異なるサイズのウィンドウを比較したいと考えています (たとえば、1 つは 24x24 で、もう 1 つは 12x12 です。「課題」は、それらを中央に配置する必要があり、大きなウィンドウと小さなウィンドウの数を同じにする必要があることです。現在、ウィンドウをトリミングして小さなウィンドウを大きなウィンドウの中央に配置することでこれを実現しています (たとえば、256x256 の画像がある場合、すべての方向から 6px ずつトリミングして 244x244 の画像を取得します)。

ただし、トリミングは非常に高速ですが (何千もの画像があります)、他のサイズのウィンドウを試してみたい場合にパラメーターを変更するのは面倒です (小さなウィンドウをオーバーラップさせたい場合は不可能な場合もあります)。

基本的に、私の質問は、画像をトリミングせずに、2 つの異なるサイズのウィンドウを中央に配置する方法はありますか? いくつかのメモ:

1)サイズの増加が黒(またはグレースケール値0)の画像である場合、大きなウィンドウは画像の「範囲外」になる可能性があります。2) 大きなウィンドウと小さなウィンドウの数は同じでなければなりません。

0 投票する
1 に答える
3178 参照

memory - グローバル メモリからローカル メモリへストライド コピーを作成するにはどうすればよいですか?

グローバルデバイスメモリのバッファからプロセッシングコアのローカルメモリにデータをコピーしたいのですが、ひねりがあります。

私はasync_work_group_copyについて知っています、そしてそれは素晴らしいです(というか、それは不格好で面倒ですが、機能しています)。ただし、私のデータは連続していません。つまり、コピーしたい 2 つの連続する Y バイトごとに X バイトが存在する可能性があります。

明らかに、役に立たないデータをすべてコピーするつもりはありません。また、ローカル メモリに収まらない可能性もあります。代わりに何ができますか?コピーを行うために実際のカーネルコードを書くことを避けたい、例えば

0 投票する
0 に答える
297 参照

c++ - ストライド パラメータを使用してデータを正しく送信する方法

単一のテクスチャを含むメッシュをレンダリングしようとしていますが、UV データのストライド パラメータが正しくないため、結果が奇妙になります。

glGenBuffers とバインディング呼び出しを省略しました。

私はこの方法でパックされたデータを持っています:

私はデータを設定します:

私はそれを描きます:

しかし、結果はテクスチャ レベルでは少し奇妙に思えます...

UV データをシェーダーに送信する方法、またはより実用的な方法で再フォーマットする方法を教えてください。

0 投票する
1 に答える
409 参照

c - コード スニペットの配列で TLB ミスの適切なストライドを見つける

システムに、ページ サイズが 8KB の 32 エントリの TLB があるとします。配列「データ」へのほぼすべてのアクセスでTLBミスを達成するには、MAXとストライドを何に設定する必要がありますか?

これは、答えがある演習の期末試験ですが、わかりません。最終的な答えは、stride=2k MAX=33*stride です。

このようなタイプの質問でTLBミスの数を見つける方法を理解するのに役立つ完全な回答は、本当に感謝しています。

0 投票する
1 に答える
3055 参照

c# - Unity コンピューティング シェーダーの頂点インデックス エラー

私は計算シェーダーと、それを使用して y 軸上の頂点の配列を変更するために使用される C# スクリプトを持っています。

しかし、正常に動作するという事実にもかかわらず、シェーダーは私の形状の最初の頂点を忘れているようです (その形状が閉じたボリュームの場合を除く?)

C# クラスは次のとおりです。

そして私の計算シェーダースクリプト:

最初は同じバッファから読み書きしていましたが、問題が発生したため、別のバッファを使用しようとしましたが、成功しませんでした。私はまだ同じ問題を抱えています。

計算シェーダーの使用方法を誤解している可能性があります (頂点シェーダーを使用できることはわかっていますが、計算シェーダーをさらに改善するために試してみたいだけです)。

私が言ったことを完了するために、Mesh.vertices Array で頂点にインデックスを付ける方法に関連していると思います。

さまざまなブロック/スレッド構成をたくさん試しましたが、試した問題の組み合わせを解決するものは何もないようです:

私が覚えていない他のいくつか。以下のようなバランスの良い構成がベストだと思います。

閉じたボリュームについて: Cube {8 Vertices} ではすべてがそれに応じて移動するように見えるため、それについてはわかりませんが、頂点の数が奇数の形状では、最初の (または最後はまだチェックしていません) ようです処理されません

さまざまな形状で試してみましたが、分割された平面が最も明白で、1 つの角が常に動かないことがわかりました。

編集 :

さらに調査した結果、メッシュの最後の (最初にチェックした頂点ではなく) 頂点を計算しないのは単に計算シェーダーであることがわかりました。これはバッファーの種類に関連しているようです。なぜ RWStructuredBuffer が問題になるのか、まだわかりません。ストリーム用に予約されていますか? これに関するMSDNドキュメントを理解できません。

編集:解決後

C# スクリプト:

VCount*VCount を使用していたので、頂点を必要以上に "2 乗" 回処理していたのはロジックだったので、回答の前に既に Blocks VCount,1,1 にロールバックしていました。

完了するには、ストライドが明らかに問題を引き起こしていることは間違いありませんでした。ストライド パラメータに関するドキュメントへのリンクを使用して回答を完成させていただけますか? (Unity ドキュメントは VOID であり、MSDN は 32 ではなく 12 であるべき理由を理解するのに役立たなかったため、どこからでも (32 は float3 のサイズだと思っていたので)

Docが必要です

それまでの間、これをより強力にするために十分に柔軟な (ジェネリック?) バージョンを提供し、シェーダーにいくつかの優れた配列処理関数を追加することを試みます...

0 投票する
1 に答える
2393 参照

python - Numpy 配列のインデックスにオフセットを追加する

この質問 (および jorgeca の回答) へのフォローアップ: 画像を重複するパッチにスライスし、パッチを画像にマージする高速な方法 パッチが適用された配列のインデックスにオフセットを追加したい、つまり:

X,Y が奇数であると仮定すると、P のサイズは W-X+1,H-Y+1 に等しくなるため、P[0,0] の中心にあるピクセルは実際には A[(Y-1) に対応します。 /2,(X-1)/2]。

P のインデックスを完全に対応させるために (データをコピーせずに) オフセットする方法はありますか?

参考までに、既存の patchify 関数を次に示します。