問題タブ [intrinsics]
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.
intrinsics - カメラの外部計算が間違っています
2 つの画像からカメラの外部要素を見つけようとしています。CameraCalibration の組み込み関数があり、シーンには既知の寸法 (3DSMAX で作成) があります。
チェス盤は 1000*1000 であるため、各正方形は 125*125 です。カメラは (0,0,3000) にあり、原点を中心とするチェス盤を真下に見ています。2 番目のイメージでは、カメラが平行移動 (-1500、0、-402) され、Y 軸上で 30° 回転して、チェス盤の中心を再び指しています。
GoodFeaturesToTrack は 81 個のコーナーを正しく識別します。
チェス盤の角の 3D ポイントを作成し、cvFindExtrinsicCameraParams2 を作成して組み込み関数を計算し、cvRodrigues2 を作成して回転行列を取得します。これがコードです
結果は正しくないようです。平行移動/回転を期待していましたが、次のようになります。
誰かが私が間違っていることを知っていますか? ありがとう!
assembly - インラインASMから組み込み型への変換
私は、パフォーマンスをテストするために、asmの小さな部分を組み込みに変換するタスクを与えられてきました。私はどちらのコードも開発したことがありませんが、asmとcを理解し、固有の構文を読んでいます。しかし、組み込みがレジスタへのアクセスをどのように処理しているかについての情報を見つけることができません。私は2つの関数を見つけました:
getReg()およびsetReg()
getReg()には、さまざまなレジスタテーブルとそのID /番号のテーブルが付属しています。-一般整数レジスタ-アプリケーションレジスタ-制御レジスタ-間接レジスタしかし、rax、rdiなどのasmレジスタに対応しているものはないようです。
組み込みでrcx、rdiなどのレジスタをアドレス指定するにはどうすればよいですか?言い換えれば、これをどのように変換できますか?
mov%0、%rcx
本質的に同等のものに?
c - 固有のxmmレジスタをuint8_t配列に変換します[16]
xmmレジスタをuint8_t配列[16]に効率的にダンプするにはどうすればよいですか?
sse - SSEとNEONの組み込み関数間の変換-シャッフル
SSE3組み込み関数で記述されたコードをNEONSIMDに変換しようとしていますが、シャッフル機能が原因でスタックしています。GCC組み込み関数、 ARMマニュアル、その他のフォーラムを確認しましたが、解決策を見つけることができませんでした。
コード:
vtbl1_u8(uint8x8_t、uint8x8_t)命令は、宛先レジスタに値を割り当てるために使用できるルックアップテーブルを作成しますが、64ビットレジスタでのみ動作します。また、シャッフル操作は、開始時に実行する必要がある比較を実行します。 NEONと私はそれを効率的に行う方法を知りません。
r0 =(mask0&0x80)?0:SELECT(a、mask0&0x0f)// SELECT(a、n)は、aからn番目の8ビットパラメータを抽出します。
r1 =(mask1&0x80)?0:SELECT(a、mask1&0x0f)
..。
最初にマスクの上位ビットをチェックし、次にマスクの下位4ビットを効率的に選択する命令が見つかりません。レジスタ内の各ビットを比較してから、条件が指定されている場合は下位4ビットを選択できることはわかっていますが、私はそれを効率的に行うことを望んでいました。誰かが助けてくれるか、参考になることを願っています。
どうもありがとう、
乾杯!
c++ - SSE2 コードの最適化
アプリケーションのボトルネックを最適化するために SSE2 組み込み関数を使用していますが、次の質問があります。
__m128i
Microsoft C++ コンパイラでは、型とunsigned int
(命令に渡される_mm_sll_epi32
) は交換できないため、これはコンパイルされません。
これはなぜですか? また、任意のunsigned int
値をに渡すにはどうすればよい_mm_sll_epi32
ですか?
_m128i
は:
c++ - 比較(_mm_cmpeq_ps)および代入操作のためのSSE組み込み関数
SSEを使用してコードの最適化を開始しました。基本的に、座標を__m128データ型x、y、zに格納することによって一度に4つの光線を処理する光線トレーサーです(4つの光線の座標は軸ごとにグループ化されています)。ただし、ゼロ除算から保護する分岐ステートメントがあり、SSEに変換できないようです。シリアルでは、これは次のとおりです。
ここで、wZはz座標であり、この計算は4つの光線すべてに対して実行する必要があります。
これをSSEに変換するにはどうすればよいですか?
私は次のようにSSEequals比較を使用して実験してきました(現在、wzは4つの光線のそれぞれのz値を含む__m128データ型に関係しています):
次に、これを使用してwZ [x] = -1.0のケースを特定し、このケースの絶対値を取得して、通常どおり計算を続行します。
しかし、私はこの取り組みであまり成功していません。
c - ネストされたforループと組み込み関数でopenmpを使用する際の問題
そのため、openmpを使用してこれらのforループを並列化する最良の方法を見つけるのに少し問題があります。私がここで行うように、最大のスピードアップは中央のループを並列化することから来ると推測しています:
しかし、これは現在私にほとんどスピードアップを与えていません。どんなヒントも素晴らしいでしょう。私はかなり長い間立ち往生しています。
visual-c++ - __addgs *はどのように使用され、GSとは何ですか?
Microsoftのサイトで、
組み込み関数。それはであると述べられていoffset
ます
GSの先頭からのオフセット。GSはプロセッサレジスタを参照していると思います。
GSは、スタックとどのように関連していますか?または、 GSに関するオフセットを計算するにはどうすればよいですか?
(そして、これや特定の呼び出し規約に関連する「落とし穴」はあります__fastcall
か?)
c++ - SSE を使用して 8 x 8 行列演算を実行するにはどうすればよいですか?
私の最初の試みは次のようになりました(乗算したいとします)
しかし、これは明らかに機能しません。どうすればこれにアプローチできますか?
一度に4つロードする必要があります....
もう 1 つの質問は、配列が非常に大きい場合 (n = 1000 など)、どうすれば 16 バイトに揃えることができるでしょうか? それは可能ですか?
c++ - Visual Studio C++ の v4sf と __attribute__ に相当するものは何ですか?
これはGCCにあります。同等の構文を知っている人はいますか?
VS 2010__attribute__
では、このタイプのストレージ クラスがなく、モードが定義されていないと表示されます。
インターネットで検索したらそう書いてあった
__attribute__( aligned( size ) )
GCCと同等以前の UNIX 開発者や複数のプラットフォームで動作するコードを書いている人にとっては、GCC で 属性(aligned( ... ))を使用して同じ結果を得ることができます。
詳細については、こちらを参照してください: http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Type-Attributes.html#Type-Attributes
完全な GCC コードはこちら: http://pastebin.com/bKkTTmH1