問題タブ [reduction]
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.
delphi - Delphiで指定された数に色を減らす方法は?
Delphiで指定された数(<= 256)に色を減らすにはどうすればよいですか? 私はただ使いたくない:
そうすれば色の数を制御できないからです。256 色以下の画像をディザリングする方法は既に知っているので、ディザリングは必要ありません。
このMedian Cut の実装を見つけましたが、これは 1990 年の純粋な Pascal であり、次のとおりです。
- Delphi でコンパイルされない
- それはシェアウェアであり、25 ドイツ マルクの費用がかかると言う
- 一見(なんとなく)不要で複雑に見える
TBitmap32
(Graphics32 ビットマップ クラス、32 ビット カラーのみをサポート) のみ <= 8 ビット bmpに縮小したい。15/16 ビットに縮小する必要はありません。24 または 15/16 ビット イメージから縮小する必要もありません。ちょうど 32bit => 8bit-
私が使用する Delphi: 7、2005、XE3。
python - Pythonファイルの削減-パート2
これは私の前の質問( Pythonでのランダム化によるテキストファイルの削減)のフォローアップです。複数の縮小を実行するように変更しましたが、最初の出力ファイルにのみ縮小が含まれています。次の3つのファイルはサイズがゼロです。これは私が見ていない明らかなものに違いありません...
出力は次のように表示されます(ファイル0.25-fooには正しい削減が含まれ、残りは空です):
cuda - リダクション付きの Cuda カーネル - 2 つの行列のドット積の論理エラー
私はCUDAを始めたばかりで、CUDAリダクションアルゴリズムに頭を悩ませようとしています。私の場合、2 つの行列のドット積を取得しようとしています。しかし、サイズ 2 の行列についてのみ正しい答えが得られます。他のサイズの行列については、間違っています。
これは単なるテストなので、マトリックスのサイズを非常に小さくしています。約 100 個しかないため、1 ブロックだけですべてが収まります。どんな助けでも大歓迎です。ありがとう!
通常コーデはこちら
ここに私のcudaカーネルがあります
私の完全なコード: http://pastebin.com/zS85URX5
cuda - CUDA Thrust: 「キー」配列の値に基づいて、配列内の一部の値のみに対する reduce_by_key
2 つの device_vector<byte> 配列d_keys
とd_data
.
たとえばd_data
、平坦化された 2D 3x5 配列 (たとえば { 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3 } ) でd_keys
あり、1D 配列である場合サイズ 5 (例 { 1, 0, 0, 1, 1 } ) の場合、対応する値が 1 の場合に行ごとに値を追加するだけになるように削減するにはどうすればよいd_keys
ですか (たとえば、 { 10, 23, 14 } の結果)?
sum_rows.cuの例では、 のすべての値を追加できますが、これd_data
は正しくありません。
または、行ごとに a and を使用して一度に の 1 行zip_iterator
と結合し、キー値が 1 の場合にのみ追加して a を実行できますが、配列をループする必要があります。d_keys
d_data
transform_reduce
d_data
私が本当に必要としているのは、組み込みではないある種のtransform_reduce_by_key
機能ですが、確かにそれを作成する方法があるに違いありません!
openmp - OpenMP におけるリダクション操作の実行順序
OpenMP でリダクション演算子の実行順序を知る方法はありますか? つまり、スレッドがリダクション操作を実行する方法を知りたいのですが、左から右ですか? 2 の累乗でない数があるとどうなりますか?
c++ - 不明な数値を 0 に近づける、よりエレガントで賢い/簡単な方法はありますか?
基本的に私は物理学を使ったゲームでドラッグを試しています. 横方向の動きを減らす必要があります (マイナスにするだけでなく、0 に近づけるなど)。
(アイテムが右に動く場合は正の力、左に動く場合は負の力)
今、私はこれをやっています:
これは問題なく機能しますが、これを行うためのより洗練された方法が必ずあると感じています。
また、0 を超えないようにする方法を見つけるのも悪くありません。
cycle - NP削減の使用
NP 問題を使用したリダクションを理解するのに苦労しており、明確にしたいと思います。次の問題を検討してください。
この件に関しては他にも話題があることは知っていますが、このような削減がどのように行われるかはまだわかりません.
これが、このような問題にアプローチする方法であることを理解しています。
- 与えられた問題が多項式時間で解けると仮定します。
- 与えられた問題を使用して、多項式時間で NP 困難であることがわかっている問題を解きます
- これは矛盾を生み出すので、仮定は間違っているに違いない
- したがって、与えられた問題は多項式時間で解けてはなりません
では、このような問題の場合、これは適切なアプローチでしょうか?
- グラフのハミルトニアン サイクルの長さとして k を選択した場合 (ハミルトン サイクルがあると仮定)、この問題を使用してグラフのハミルトン サイクルを見つけることができます。
- ハミルトニアン サイクルは NP 時間でしか見つからないため、この問題も NP 時間でしか解けないはずです。
python - CUDA と Python の ODEInt および Parallel Reduction を組み合わせる
私は生物物理学の大学院生で、PyCUDA と Scipy を使用してタンパク質凝集モデルをプログラムしようとしていODEInt
ます。過去 2 週間以内に、コードを実行できるようになりましたが、非常に遅いです。私のコードが何をするのか説明できるかどうか見てみましょう。
各要素が長さのポリマーの濃度である濃度のnp
配列があります。各カーネルが特定の長さのポリマーの変化率を計算する場所を使用して、ポリマー濃度の変化率を計算する関数があります。この計算中に、長さの配列をスレッドで合計する必要があるため、コードが大幅に遅くなります。N
i+1
CUDA
(N-i-1)
少し読んでグーグルで調べてみると、並列処理を呼び出して配列の合計などのシリアル計算をはるかに高速化する方法として、並列削減に出くわしました。もちろん、私はマーク・ハリスのパワーポイントのスライドを参照しています. これらは素晴らしい読み物であり、これは私のコードを劇的に高速化する潜在的な方法のように見えますが、いくつか質問があります:
ポリマー種の数 N が ~ 8700 ~ 9000 である必要がある場合、CUDA を使用してこれらの N 配列を同時に削減することは考えられますか? 簡単な計算を行うと (同時スレッドの最大数を計算する方法に関する SO の優れた説明のおかげで可能になりました)、GTX Titan で一度に 15 * 64 * 32 = 30720 のスレッドを実行できることがわかりました。一度に最大 8960 個のカーネルでカーネルを呼び出すと、使用できるスレッドは 21760 個しか残っていないはずですよね? それを適切に削減するには、少なくとも (配列の長さ/2) スレッドが必要なように思われるので、私は絶望的です。
残りのスレッドを分割して、一度にいくつかの大きな配列をシリアルに削減することで、残りのスレッドを使用できるのではないかと考えていました。
わかりません...私はただの物理学の大学院生です。間違った方向への長い旅に出る前に、専門家に聞いてみようと思いました. カーネルに何かを減らすように簡単かつ効率的に伝えることは可能ですか?
ありがとう、カルステン
これが私がやろうとしていることの表現です。
これまで説明してきた配列の合計は、基本的に各スレッドの同じ配列のより小さいバージョンであることに気付くでしょう。これは、これがホスト上で行うべきことなのかどうか疑問に思います。
bison - バイソンの削減は期待どおりに機能しませんでした
私は EPL パーサーを作成しようとしているので、flex と bison を学んでいます。次のルール (SQL) で使用してみます。
バイソンのルールは次のとおりです。
すべてのトークンと非終端記号の型は「char*」です
stdin からの入力は "select $abc from $ddd" であるため、レクサーが "identifier_expr" アクションでトークン FROM を返すと、出力は "ident_expr:abc from" になります。
c - 構造体をループして関数を減らしたい
みんなおはよう、
非常に反復的な関数を削減しようとしていますが、各「反復」には、struct A.element1 が struct B.element1 を設定する 2 つの構造体があります。現時点では、B を A に設定するための約 12 の異なる reqFunction() 呼び出しを持つ myFunction() があります。
reqGetFunction() は変更できません。GLOBAL_IN をループする他の関数用の静的グローバル配列があり、structA A を静的グローバルにすることができます。
1 つのブロックを実行する myFunctionSingle() のようなものと、GLOBAL_IN 配列と構造体の A および B の要素を循環して myFunctionSingle() に入力する for ループを持つ myFunctionAll() が必要です。
したがって、私の本当の質問は、構造体のセットアップやreqGetFunctionなどのすべてが石に設定されているため、配列でできるように構造体の要素をどのように循環させることができるかということです。私はいくつかのことを試して検索しましたが、現在困惑しています。正直なところ、これが可能かどうか、またはそれだけの価値があるかどうかはわかりません。ご意見をお寄せいただきありがとうございます。