JuliaSIMD / JuliaSIMD/LoopVectorization.jl

Support `getproperty`/`setproperty!` in reductions

オープン
#282 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
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
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. 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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。