Julia: N `VecElements{T}`s рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ `VecTuple{N,T}` рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдорд╛рд░реНрдЪ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: JuliaLang/julia

рдореИрдВ SIMD.jl рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕реЗ рдЕрд╡рдЧрдд рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╕рд┐рдордб рд╡реИрдХреНрдЯрд░ рдХреА рдореМрд▓рд┐рдХ рдХреЛрдб рдкреАрдврд╝реА рдХреЛ рдЬреВрд▓рд┐рдпрд╛ рдмреЗрд╕ рдореЗрдВ рд╣реА рдЖрд╕рд╛рди рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рд░реИрдкрд┐рдВрдЧ рдЯреБрдкрд▓ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдЫреБрдкрд╛рдПрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ VecTuple{N,T} рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди NTuple{N, VecElement{T}} рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдЕрдВрддрд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ VecElement рдХреЛрдбрдЬрди рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рддрддреНрд╡ рдХреЗ рдмрдЬрд╛рдп рдЯрдкрд▓ рд╕реЗ рдмрдВрдзреЗ рд╣реЛрдВрдЧреЗред рдЗрд╕ рддрд░рд╣, рдЯрдкрд▓ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдкрд╛рдВрддрд░рдг T <-> VecElement{T} рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╕реЗ рдПрдХ рднреА рддрддреНрд╡ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ NTuple{N, VecElement{T}} рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ x[i].value рдмрд╕ рдХреЗ рдмрдЬрд╛рдп x[i] ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ, рдпрд╛ рдХреМрди рд╕реЗ рдореМрд▓рд┐рдХ рдкреНрд░рдХрд╛рд░ (8 рд╕реЗ 64 рдмрд┐рдЯ рдЖрдХрд╛рд░) рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рдЯрдкрд▓ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдЧреАред #20961 рднреА рджреЗрдЦреЗрдВред

рдореИрдВ рд╕рд┐рдордб рд╡реИрдХреНрдЯрд░ рдкрд░ рдЬреВрд▓рд┐рдпрд╛ рдмреЗрд╕ рдкрд░ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ (рдлреЗрд░рдмрджрд▓, рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рдВрдЧ рдпрд╛ рдЙрд▓рдЯрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ)ред рдпрд╣ рдЕрднреА рднреА рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╕ рдЗрд╕ рддрд░рд╣ рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╕рдмрд╕реЗ рдореМрд▓рд┐рдХ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛрдбрдЬрди рд╕рдВрдкрддреНрддрд┐ рдЯреБрдкрд▓ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИред

( VecTuple рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдорд▓реЗ рдкрд░ рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╛рдо рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рд╣реИред)

simd speculative types and dispatch

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд╛рд░ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ рдЬреИрд╕реЗ SIMDBase ред рдлрд┐рд░ рд╣рдо рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП SIMD рдХреЛ рдкреБрдирдГ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ -- рдпрджрд┐ рдЖрдкрдХреА рдзрд╛рд░рдгрд╛ рд╕рд╣реА рд╣реИ - SIMD рд╕рд░рд▓ рдмрдирд╛рдПрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рд▓реЛрдЧ SIMDBase рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рдордд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдХреБрдЫ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп LLVM рдХреЙрд▓рд┐рдВрдЧ рдЕрдВрддрд░реНрд╡рд┐рд░реЛрдзреЛрдВ рдХреЛ рдХрд╣реАрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ VecTuple рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Tuple рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдореВрд░реНрдд рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рджрд┐рд╢-рдЯрдкрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджреЛрдВ рдХрд╛ рдЖрдВрд╢рд┐рдХ рдЯрдХрд░рд╛рд╡ рд╣реИред

рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд╛рд░ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ рдЬреИрд╕реЗ SIMDBase ред рдлрд┐рд░ рд╣рдо рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП SIMD рдХреЛ рдкреБрдирдГ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ -- рдпрджрд┐ рдЖрдкрдХреА рдзрд╛рд░рдгрд╛ рд╕рд╣реА рд╣реИ - SIMD рд╕рд░рд▓ рдмрдирд╛рдПрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рд▓реЛрдЧ SIMDBase рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рдордд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдХреБрдЫ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп LLVM рдХреЙрд▓рд┐рдВрдЧ рдЕрдВрддрд░реНрд╡рд┐рд░реЛрдзреЛрдВ рдХреЛ рдХрд╣реАрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, SIMD рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рднреА рдпрд╣рд╛рдБ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ: #2299

рдореИрдВ рдХреБрдЫ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ ... рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tkoolen picture tkoolen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

manor picture manor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

musm picture musm  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thofma picture thofma  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

StefanKarpinski picture StefanKarpinski  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ