Use Toeplitz-dot-Hankel for very large dimensional transforms
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 38/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- julia
- 領域
- performance
調査の方向性
まず、変換実装 cheb2leg と th_cheb2leg の場所を特定し、報告されたベクトルサイズでの動作を比較します。n=100、1,000、10,000 で両方のパスをベンチマークし、その後、issue で言及されている行列ケースと FFTs をプロファイルします。非常に大きな配列に対してより高速なパスを選択し、報告されたリグレッションや過剰なアロケーションを再発させないことが完了の条件です。
索引モデルが issue の本文から書いたものです。
説明
Toeplitz-dot-Hankel has better complexity plans so should be the default when arrays are large: Eg for cheb2leg even n = 1000 sees a signifcant speedup:
julia> n = 100; x = randn(n); @time cheb2leg(x); @time th_cheb2leg(x);
0.000267 seconds (2 allocations: 944 bytes)
0.000654 seconds (98 allocations: 288.531 KiB)
julia> n = 1000; x = randn(n); @time cheb2leg(x); @time th_cheb2leg(x);
0.028686 seconds (2 allocations: 7.984 KiB)
0.006464 seconds (99 allocations: 10.559 MiB)
julia> n = 1000; x = randn(n); @time cheb2leg(x); @time th_cheb2leg(x);
0.028856 seconds (2 allocations: 7.984 KiB)
0.011597 seconds (99 allocations: 10.559 MiB)
julia> n = 10_000; x = randn(n); @time cheb2leg(x); @time th_cheb2leg(x);
0.778423 seconds (3 allocations: 78.219 KiB)
0.103821 seconds (108 allocations: 799.524 MiB)
This was prematurely changed but reverted as there were some regressions. But also the number of allocations in th_* is exorbitant, probably because it dates back to a port of Matlab code.
For matrices I'm not seeing much improvement in the th_*, even for a 40k x 10 transform, which is suspicious....but doing a profile all the time is in the FFTs
- 主要言語
- Julia
- スター
- 282
- フォーク
- 27
- 平均マージ
- 53分
- マージ済み PR(30日)
- 1
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaApproximation/FastTransforms.jl のほかの issue
-
Loading FastTransforms.jl can make FFTs via FFTW.jl 100x slower due to threading conflicts対応中かも @dlfivefifty が 91 日前に担当しました。 オープン
JuliaApproximation/FastTransforms.jl#267 · リアクション 2 件 · 担当者 2 名 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 38/100
JuliaApproximation/FastTransforms.jl#266 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
JuliaApproximation/FastTransforms.jl#263 · コメント 2 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
JuliaApproximation/FastTransforms.jl#257 · コメント 1 件 ·
-
Allocating lmul!オープン
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
JuliaApproximation/FastTransforms.jl#253 · コメント 7 件 ·
JuliaApproximation/FastTransforms.jl の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
SciML/DiffEqNoiseProcess.jl#342 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
oxfordcontrol/COSMO.jl#211 ·
-
documentation
難易度 2/5 半日 初心者へのやさしさ 65/100
メンテナーはふだん 6 日以内に返信