JuliaSIMD / JuliaSIMD/LoopVectorization.jl
Support `getproperty`/`setproperty!` in reductions
まだ誰も着手していません。
- 主要言語
- Julia
- スター
- 789
- フォーク
- 73
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
```julia
julia> using LoopVectorization
julia> mutable struct foo
s
end
julia> f = foo(0)
foo(0)
julia> m = rand(Float32, 4,4)
4×4 Matrix{Float32}:
0.925989 0.8695 0.784866 0.0669142
0.258075 0.165664 0.787071 0.697996
0.219509 0.580573 0.298625 0.479805
0.000333428 0.200458 0.858297 0.571481
julia> s = 0
0
julia> @avxt for i in eachindex(m)
s += ifelse(m[i]>0.5, 1, 0)
end
julia> s
8
julia> @avxt for i in eachindex(m)
f.s += ifelse(m[i]>0.5, 1, 0)
end
ERROR: LoadError: LHS not understood; only `:ref`s and `:tuple`s are currently supported.
f.s
Stacktrace:
[1] add_assignment!(ls::LoopVectorization.LoopSet, LHS::Expr, RHS::Expr, elementbytes::Int64, position::Int64)
@ LoopVectorization C:\Users\89639\.julia\packages\LoopVectorization\wL8Qh\src\modeling\graphs.jl:1148
[2] push!(ls::LoopVectorization.LoopSet, ex::Expr, elementbytes::Int64, position::Int64)
@ LoopVectorization C:\Users\89639\.julia\packages\LoopVectorization\wL8Qh\src\modeling\graphs.jl:1165
in expression starting at REPL[8]:1
```
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
示されている Julia @avxt の削減を f.s で実行して、エラーを再現します。src/modeling/graphs.jl の add_assignment!(1148 行付近で報告)と、その push! 呼び出し元から始めます。property-based の削減代入が、既存の ref および tuple のケースを後退させることなく動作すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- julia
- 領域
- performance
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 45/100