問題タブ [accelerate-framework]

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 投票する
3 に答える
751 参照

objective-c - GCD 内の単一の FFTSetup データ構造への同時アクセス

単一の データ構造を作成し、FFTSetupそれを使用して複数の FFT 計算を同時に実行しても問題ありませんか? 次のようなものは機能しますか?

答えは、次の考慮事項に依存すると思います。

1)「読み取り専用」の方法でvDSP_fft_zrip()データ内(またはそれが指すデータ)にのみアクセスしますか?それとも、FFT 計算を実行する際に書き込まれるfftSetup一時的なバッファ (スクラッチ スペース) があるのでしょうか?fftSetupvDSP_fft_zrip()

2) そのようなデータがfftSetup 「読み取り専用」の方法でアクセスされている場合、複数のプロセス/スレッド/タスク/ブロックが同時にアクセスしても問題ありませんか? (複数のプロセスが読み取り用に同じファイルを開く可能性がある場合を考えていますが、必ずしも書き込みや追加用ではありません。この類推は適切ですか?)

FFTSetup関連するメモとして、データ構造によってどれだけのメモリが占​​有されているのでしょうか? 調べる方法はありますか?(不透明なデータ型です。)

0 投票する
3 に答える
1297 参照

ios - 加速フレームワーク (vImage) を使用してグレースケール画像をスケーリングする方法

こんにちは、グレースケール画像を高速にスケーリングする必要があるため、vImage を試しましたが、アプリがクラッシュしました。助けてください。以下のコードでは、srcimg.data/dstimg.data は unsigned char 画像データ (単一チャネルのみのグレー データ) へのポイントです。

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

ios - iOSでRGB24をBGR24にすばやく変換する方法は?

vImageConvert_RGB888toPlanar8Accelerate.framework からandを使用vImageConvert_Planar8toRGB888して RGB24 を BGR24 に変換しますが、変換する必要があるデータが 3M や 4M など非常に大きい場合、これに費やす時間は約 10ms です。それで、誰かが十分に速いアイデアを知っていますか?.私のコードは次のようになります:

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

ios - 加速フレームワークから計算された固有ベクトルの符号が異なるのはなぜですか?

次の 9x9 入力マトリックスのこんにちは

dsyevd_ (lapack) の固有ベクトルは次のとおりです。

opencv の固有ベクトル

値は位置と符号が異なります。lapackでこの問題を修正するにはどうすればよいですか。

0 投票する
5 に答える
801 参照

arrays - 配列宣言の順序がパフォーマンスに大きな影響を与えるのはなぜですか?

まず、Accelerateフレームワークを使用して周波数分析機能を調整する場合、システムの絶対時間は一貫して反復あたり225msでした。それから昨夜、2つのアレイが宣言される順序を変更しましたが、突然202msになりました。宣言の順序を変更するだけで10%増加するのは、非常識なようです。コンパイラ(最適化するように設定されている)がまだこの解決策を見つけていない理由を誰かが私に説明できますか?

追加情報:ループの前に、ループで使用される配列のセットアップがあります。これは、配列を整数から浮動小数点配列(Accelerateの場合)に変換し、時間配列(16行の長さ)のsinとcosを取得することで構成されます。すべてのfloat配列(8配列x 1000要素)は、関数で最初に宣言されます(パラメーターの健全性チェックの後)。フットプリントの縮小がほとんどないためにパフォーマンスが低下するため、これらは常に同じサイズ(定数によって)と宣言されます。それらをグローバルにすることをテストしましたが、パフォーマンスに変化がないため、コンパイラーはすでにそれを理解していると思います。ループの長さは25行です。

---追加---

はい、「-Os」がフラグです。(とにかくXcodeのデフォルト:最速、最小)

(以下はメモリからのものです。コンパイルしようとしないでください。ストライド(1)などを入れなかったためです。ただし、Accelerate呼び出しはすべてそこにあります)

渡されたパラメーター:inttimearray、intamparray、length、scale1、scale2、amp

---現在の解決策---

私は次のようにいくつかの変更を加えました:

配列はすべて整列されていると宣言され、ゼロにされ(次に説明します)、maxsizeは16の倍数になります

長さがmaxsize未満の場合、長さを16の最も近い倍数に切り上げて、ループされたすべての関数が16で割り切れる幅で動作するように、すべての配列をゼロにしました。合計。

利点は次のとおりです。

  • わずかなパフォーマンスの向上
  • 配列宣言の順序に関係なく、速度はほぼ一定です(これは、すべてが大きなブロックではなく、必要になる直前に実行されます)。
  • 速度は、16幅の長さ(つまり、241から256、または225から240 ...)でもほぼ一定ですが、以前は、長さが256から255になると、関数のパフォーマンスが3%以上低下していました。

将来的には(おそらくこのコードでは、分析要件はまだ流動的であるため)、スタックの使用量とベクトルの整列/チャンクをさらに考慮する必要があることに気付きました。残念ながら、このコードでは、この関数を一度に複数のオブジェクトから呼び出すことができるため、これらの配列を静的またはグローバルにすることはできません。

0 投票する
4 に答える
581 参照

ios - iOS Cocoa Touch vImage サブサンプリング

私の場合、基本的に ARGB-float-Arrays である Cocoa Touch で vImages を使用しており、サブサンプリングを行う必要があります。ローパス フィルタリングは vImage 関数を使用しても問題ありませんが、2x2 ピクセルから 1 つを選択するにはどうすればよいですか (係数 2 でサブサンプリングしたい場合)。もちろん、vDSP ストライド関数を使用することもできますが、これは水平サブサンプリングでのみ機能し、垂直サブサンプリングでは機能しません。

以下が私が何をしようとしているのかを明確にすることを願っています。この画像に示すように、X でマークされたすべてのピクセルを選択したいと思います。

しかし、メモリは線形であるため、私の配列は次のようになります。

合理的な方法でサブサンプリングを実行するにはどうすればよいですか?

編集: 1 次元 float-array (負の値を含む) として格納されている特定のビットマップの 2 次元ダウンサンプリングを行う効率的な方法を探しています。

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

matlab - 非対数ベース2の数値のMatlabFFT(高速フーリエ変換)関数

AppleのAccelerateFrameworkFFT関数を利用するアプリを開発していて、 MatlabのFFT関数の機能を模倣しようとしています。現在のコードは、matlabで実行しているのとまったく同じ方法で出力するように設定しています。同じように出力されないのは、データ配列内の要素の数が!= 2を底とする対数(技術的にはFFTに必要)の場合のみです。Matlab関数がこのケースをどのように処理するかを誰かが知っているかどうか疑問に思いました。アップルコードを使用して実行すると、異なる結果が生成されます。

注:私は単にfft(x)を呼び出しているのではありません。また、FFTシフトして絶対値を取り、それを2乗します。また、FFTの影響を直接受けないため、これらをAppleコードにミラーリングします。彼らは事後に呼ばれます。

例1-16要素(対数ベース2): 同様の出力

Matlabコール:

*長さのために省略されたAppleコード

Appleの出力:

例2-10要素(対数ベース2ではない):異なる出力

Matlabコール:

*長さのために省略されたAppleコード

Appleの出力:

ご覧のとおり、最初の例と2番目の例では明らかに同じ出力が生成されます。私は正と負の両方の入力でテストしましたが、それらが異なるのはログベース2ではない場合だけです。Matlabがこの問題をどのように処理するか知っている人はいますか?おそらく、2進数の対数になるまで配列を0で埋めてから、特定のポイントの平均を計算しますか?私は多くの検索を行いましたが、この特殊なケースで出力を取得するために彼らが何をしているのか理解できません。

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

objective-c - 結果を vDSP フレームワークの入力ベクトルの 1 つに格納することは可能ですか?

Accelerate Framework の vDSP 関数では、すべての関数で結果ベクトルを入力する必要があります。元の入力ベクトルが不要になった場合、入力ベクトル (または入力ベクトルの 1 つ) を結果ベクトルとして渡すのは正しいですか?

私が意味するものの例:

これは、input_vector を取り、すべての要素に scalar_addition を追加します。結果はinput_vectorに格納されます。

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

ios - フロートバッファAudioUnitを使用したFFT出力

vDSP_zripとAudioUnitの使用法と構成に問題があります。実際、パックされたデータをfloatとして保存するようにAudioUnitを構成しました。循環バッファーを作成し、このバッファーがいっぱいになると、fftを計算します。結果はありますが、fft出力が悪い理由がわかりません(図を参照)

AudioUnit構成:

循環バッファ:

vDSP呼び出し:

どこ_fftsize = _audioSample.capacity()/2

形