Numpy: NumPy рдореЗрдВ BLIS рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХрд░ рдореБрджреНрджрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдорд╛рд░реНрдЪ 2016  ┬╖  97рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

рдпрд╣рд╛рдВ рдиреНрдпреВрдкреА рдореЗрдВ BLIS рд╕рдорд░реНрдерди рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЯреНрд░реИрдХрд░ рдореБрджреНрджрд╛ рд╣реИред рдЕрдм рддрдХ рд╣рдо рджреЛ рдирд╛рдорд╛рдВрдХрд┐рдд рдзрд╛рдЧреЗ рдореЗрдВ рдХреБрдЫ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ:

рддреЛ рдЗрд╕ рддрд░рд╣ рднрд╡рд┐рд╖реНрдп рдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рд╣реИ :-)

рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреБрдЫ рдмрдХрд╛рдпрд╛ рдореБрджреНрджреЗ:

CC: @tkelman @ рдореИрдереНрдпреВ-рдмреНрд░реЗрдЯ @fgvanzee

15 - Discussion build

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

MSVC ABI рдХреЛ рд▓рдХреНрд╖реНрдп рдХрд░рдХреЗ clang.exe рдХреЗ рд╕рд╛рде рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдкрд░ BLIS рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рдФрд░ рдпрд╣рд╛рдВ рдХреЗ рдмрджрд▓рд╛рд╡ рд╣реИрдВред OpenBLAS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрдо рдереАред
рд▓реЙрдЧ рдпрд╣рд╛рдБ рд╣реИ ред рд╕рднреА рдмреАрдПрд▓рдЖрдИрдПрд╕ рдФрд░ рдмреАрдПрд▓рдПрдПрд╕ рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

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

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ BLIS рдХреЛ site.cfg рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреНрдпрд╛ libFLAME рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

Https://www.cs.utexas.edu/%7Eflame/web/libFLAME.html рдкрд░ рд╡рд░реНрдгрди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ libFLAME рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ LAPACK API рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

@rgommers libflame рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ netlib LAPACK API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рдХрд┐ libflame рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдмреАрдПрд▓рдЖрдИрдПрд╕ рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдЧрддрд┐ рдХреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЕрдм рд░рдирдЯрд╛рдЗрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░рди-рдЯрд╛рдЗрдо рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░-рдЯрд╛рдЗрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред BLIS рдЕрдм рдЕрдкрдиреЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХреАрдХреГрдд BLAS рдкрд░реАрдХреНрд╖рдг рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗрд▓реНрдл-рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рднреА рдЬрдЧрд╣ рдореЗрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рд╣реИрдбрд░ рдЬреЗрдирд░реЗрд╢рди (500+ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╣реЗрдбрд░ рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рдВрдЧрд▓ рдмреНрд▓рд┐рд╕.рдПрдЪ) рд╣реИ, рдЬреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдбрдХреНрдЯ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдкрдиреЗ рд╕реНрдЯреИрдЯрд┐рдХ рдФрд░ рд╢реЗрдпрд░реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╛рдирдХреАрдХреГрдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдХрд╛ рднреА рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ soname ред рдЕрдВрдд рдореЗрдВ, рдЗрд╕рдХреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдЕрд╕реЗрдВрдмрд▓рд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╕реНрдорд╛рд░реНрдЯ рд╡рд┐рдЬрд╝-рдП-рд╡рд┐рдЬрд╝ рдЪреЗрдХрд┐рдВрдЧ рд╣реИред рдФрд░ рдпрд╣реА рдореИрдВ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред

@fgvanzee рдзрдиреНрдпрд╡рд╛рджред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореИрдВ numpy.distutils рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП +1 рд╣реВрдВред

рдореИрдВ рдЗрд╕ рд╕рдордп рд╕рдордп рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рд╕рд┐рддрдВрдмрд░ рддрдХ рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрджрд┐ рдХреЛрдИ рджреВрд╕рд░рд╛ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕реАрдзрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрд╕реА рддрд░рд╣ gh-7294 рдХреЗ рд░реВрдк рдореЗрдВ)ред рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг / рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ред

рдпрд╣ рдкреНрд░рдореБрдЦ рдкреНрд░рдЧрддрд┐ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдХрд┐рддрдиреА рджреВрд░ рдЖрдк рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдЖрдк рд╕реБрдкреАрд░рд┐рдпрд░ / рд╕реНрдХреИрдкреА (рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рд╣рд╛рдЬ рд╕реЗ) рдУрдкрдирдмреАрдПрд▓рдПрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ?

(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд╝реЛрд░реНрдЯрди рдореЗрд╕ рдХреЗ рдХрд╛рд░рдг conda рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╕реНрдХреЗрдкреА-рдУрдкрдирдмреНрд▓рд╛рд╕ рдирд╣реАрдВ рд╣реИ: https://github.com/conda-forge/scipy-feedstock/blob/master/recipe/ meta.yaml # L14)

рдпрджрд┐ рдЖрдк MSVC ABI рд╕рдВрдЧрдд BLAS рдФрд░ LAPACK рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрдм рднреА рдХреЛрдИ рдЖрд╕рд╛рди, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдЬрдХрд▓ рдХреНрд▓реИрдВрдЧ-рдХреНрд▓ рдФрд░ рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде, рд╕рдорд╕реНрдпрд╛ рд╕рдВрдХрд▓рдХ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛, рдЕрдм рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рд▓рдЪреАрд▓рд╛рдкрди рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рдореВрд▓реНрдпрд╛рдВрдХрди рдпрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд░реЗрдлрд░реА https://github.com/flame/blis/issues/57#issuecomment -284614032

@rgommers рдореИрдВ рдХрд╣реВрдБрдЧрд╛ рдХрд┐ BLIS рд╡рд░реНрддрдорд╛рди рдореЗрдВ OpenBLAS рдХрд╛ рдПрдХ рдХрд╛рдлреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИ рдХрд┐ рдПрдПрдордбреА рдиреЗ рдПрд╕реАрдПрдордПрд▓ рдХреЛ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдирдП рдУрдкрди-рд╕реЛрд░реНрд╕ рдЧрдгрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдорд╛рдзрд╛рди рдХреА рдиреАрдВрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓реЗ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИред (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкреНрд░рд╛рдпреЛрдЬрдХ рд╣реИрдВ, рдФрд░ рдкрд┐рдЫрд▓реЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдиреЗрд╢рдирд▓ рд╕рд╛рдЗрдВрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред)

рдкреНрд░рджрд░реНрд╢рди-рд╡рд╛рд░, рд╕рдЯреАрдХ рд▓рдХреНрд╖рдг рд╡рд░реНрдгрди рдЙрд╕ рдСрдкрд░реЗрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдбреЗрдЯрд╛рдЯрд╛рдЗрдк, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЖрдХрд╛рд░ рд╢реНрд░реЗрдгреА рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдо рддреМрд░ рдкрд░ рдмреЛрд▓рдирд╛, BLIS рдЖрдорддреМрд░ рдкрд░ OpenBLAS рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИред рд╕рднреА рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЖрдХрд╛рд░ (300 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо) рдХреЗ рд▓рд┐рдП рд▓реЗрд╡рд▓ -3 рдХрд╛ рдкреНрд░рджрд░реНрд╢рдиред рдпрд╣ OpenBLAS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╕реНрддрд░ -3 рд╕рдорд╛рдВрддрд░ рд░рдгрдиреАрддрд┐ рдХреЛ рднреА рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЙрдирдХреЗ рдЕрдЦрдВрдб рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдХрд╛рд░рдг) рд╕рдХреНрд╖рдо рд╣реИред

рд╕реНрдерд┐рд░рддрд╛-рд╡рд╛рд░, рдореИрдВ рдпрд╣ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ BLIS рдХрд╛рдлреА рд╕реНрдерд┐рд░ рд╣реИред рд╣рдо рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдкреНрд░рддрд┐ рдмрд╣реБрдд рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд┐рдЫрд▓реЗ рдкрд╛рдВрдЪ рдпрд╛ рдЗрддрдиреЗ рдорд╣реАрдиреЛрдВ рдореЗрдВ рд╕рдореБрджрд╛рдп рд╕реЗ рдмреНрдпрд╛рдЬ рдХреА рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореБрджреНрджреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ (рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрдорд╛рдг)ред рдЗрд╕рдиреЗ рдПрдВрдб-рдпреВрдЬрд░реНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпреВрдЬрд░ рдПрдХреНрд╕рдкреАрд░рд┐рдпрдВрд╕ рдХреЛ рд╕реНрдореВрде рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ BLIS рдиреЗ (рджрд┐рди рдХреЗ рд╢реВрдиреНрдп рд╕реЗ) BLAS рдЬреИрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рд╕реБрдкрд░рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рджреЛ рдЙрдкрдиреНрдпрд╛рд╕ API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд▓рдЧ рдФрд░ BLAS рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  • рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ BLAS рдЬреИрд╕рд╛ API
  • рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯрд╛рдЗрдк рд╡рд╕реНрддреБ рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ

рдпрд╣ рди рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рд░рд╛рд╕рдд рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ BLAS рд▓рд┐рдВрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдХрд╕реНрдЯрдо рдШрдиреЗ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЯреВрд▓рдмреЙрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рд╡реЗ рд▓реЛрдЧ рдЬреЛ BLAS рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреНрд░рддрд┐ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЖрддреНрдореАрдпрддрд╛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореМрдЬреВрджрд╛ BLAS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рд╛рде рд╣реА BLAS API рджреЛрдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрдорд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдкреИрджрд╛ рд╣реБрдИ рдирд┐рд░рд╛рд╢рд╛, 2012 рд╕реЗ BLIS рдореЗрд░реЗ рдкреНрд░реЗрдо рдХрд╛ рд╢реНрд░рдо рд░рд╣рд╛ рд╣реИред рдпрд╣ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред :)

рдЖрд╣ рдзрдиреНрдпрд╡рд╛рдж @tkelman Cygwin :( :(

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рд┐рдирдХреНрд╕ / macOS рдкрд░ BLIS рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрдХрд▓рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдХреБрдЫ рдЕрдиреБрднрд╡ рд╕реБрдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред

рд╕рдВрджрд░реНрдн @fgvanzee рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдорд╛рд░реЗ рд▓рд┐рдП libFLAME рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдФрд░ SciPy рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реВрдЯ рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред

@rgommers рдкреБрди: рдЖрдкрдХреА рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж: libflameред рдмрд╕ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд░рд╣реЗрдВ рдХрд┐ libflame рдХреБрдЫ TLC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рдпрд╣ BLIS рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдХрд╛рд░ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп / рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ, рдФрд░ рдкрд┐рдЫрд▓реЗ рдЫрд╣ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╣рдорд╛рд░рд╛ рд▓рдЧрднрдЧ 100% рдзреНрдпрд╛рди рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдУрдкрдмреНрд▓рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдФрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╡рд┐рдХрд▓реНрдк рдмрди рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЕрдиреНрдпред)

рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдПрдХ рдмрд╛рд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдЕрдиреБрд╕рдВрдзрд╛рди рд░рд╛рд╕реНрддреЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдВрднрд╡рддрдГ рдЕрдкрдирд╛ рдзреНрдпрд╛рди libflame / LAPACK- рд╕реНрддрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреЛрд▓реНрд╕реНрдХреА, LU, QR рдХрд╛рд░рдХ) рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред рдпрд╣ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕рдореЗрдВ рдЕрдВрддрддрдГ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрддрдГ libflame рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдмрд╛рдж рдХрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ BLIS рдореЗрдВ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп API рдХрд╛ рд▓рд╛рдн рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдФрд░ рдореЗрдореЛрд░реА рдХреЙрдкреА рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ BLAS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред рдпрд╣ рдХрдИ рд╡рд┐рд╖рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред

рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛ NumPy 1.15 рдФрд░ BLIS 0.3.2 рдХреЗ рд╕рд╛рде Intel Skylake рдкрд░ рдмрд┐рдирд╛ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдЪрд▓рд╛рдпрд╛ рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ HT рдХреЗ рд╕рд╛рде рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдирд┐рд░реНрджреЗрд╢ рддреНрд░реБрдЯрд┐ рдереА):

Dotted two 4096x4096 matrices in 4.29 s.
Dotted two vectors of length 524288 in 0.39 ms.
SVD of a 2048x1024 matrix in 13.60 s.
Cholesky decomposition of a 2048x2048 matrix in 2.21 s.
Eigendecomposition of a 2048x2048 matrix in 67.65 s.

рдЗрдВрдЯреЗрд▓ MKL 2018.3:

Dotted two 4096x4096 matrices in 2.09 s.
Dotted two vectors of length 524288 in 0.23 ms.
SVD of a 2048x1024 matrix in 1.11 s.
Cholesky decomposition of a 2048x2048 matrix in 0.19 s.
Eigendecomposition of a 2048x2048 matrix in 7.83 s.

4.29 рд╕реЗрдХреЗрдВрдб рдореЗрдВ рджреЛ 4096x4096 рдореИрдЯреНрд░рд┐рд╕реНрдХреЗрдЯреЗрдбред

@homocomputeris рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рджреЛ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдкрд░ рдХрд┐рд╕реА рдСрдкрд░реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА "рдбреЙрдЯ" рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╕реБрдиреА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рд╣реИ?

@fgvanzee рдЗрди рджрд┐рдиреЛрдВ BLIS рдореЗрдВ Windows рд╕рдорд░реНрдерди рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрд╕рдорд░реНрдерд┐рдд рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ ...

@fgvanzee рдФрд░ рд╣рд╛рдБ, numpy.dot рдкрд╛рдпрдерди рдореЗрдВ GEMM рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрд░реАрдХрд╛ рд╣реИред (рдПрдХ рд╡рд┐рд╖рдо рдирд╛рдо рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реЗрдХреНрдЯрд░-рд╡реЗрдХреНрдЯрд░, рд╡реЗрдХреНрдЯрд░-рдореИрдЯреНрд░рд┐рдХреНрд╕, рдореИрдЯреНрд░рд┐рдХреНрд╕-рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рднреА рдПрдХ рд╣реА рдПрдкреАрдЖрдИ рдореЗрдВ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред)

@njsmith "рджреЗрд╢реА" рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдХреА рд╕реНрдерд┐рддрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдФрд░ рд░реБрдЪрд┐ рдХреА рдХрдореА рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ 10 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЙрдмрдВрдЯреВ рдлреЙрд░ рд╡рд┐рдВрдбреЛрдЬ" рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмреИрд╢ рдЕрдиреБрдХреВрд▓рддрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдЖрд╢рд╛рдЬрдирдХ рдЖрдп рд╣реИред (рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рд╣рдорд╛рд░реЗ рд╕рдореВрд╣ рдореЗрдВ рдХреЛрдИ рднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЙрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рднреА рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред)

рдареАрдХ рд╣реИ рдЕрдм рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЦрд┐рд░реА рдкреЛрд╕реНрдЯ ...

рдЗрд╕ рддрд░рд╣ рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП @homocomputeris рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ OpenBLAS, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд┐рддрдирд╛ рддреЗрдЬрд╝ рд╣реИред

@fgvanzee рджреЗрд╢реА рддрд╛рд░ рдХреЗ рд╕рдорд░реНрдерди рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рдЗрди рджрд┐рдиреЛрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ? рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рд╕рдХрд╛рд░рд╛рддреНрдордХ, рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ, рд╕рдЯреАрдХ рдЧреБрдгрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ ...? (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛрдЧрд╛, рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдорд╛рдкреА рдЧрдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдордирдорд╛рдиреА рдкреНрд░рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реБрдиреНрди рд╕рд░рдгрд┐рдпрд╛рдБ рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред)

@fgvanzee "рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдмреИрд╢" рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд▓рд┐рдирдХреНрд╕ рд╡реАрдПрдо рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреЗрдЬ рдФрд░ рд╕рд╣рдЬ рд╡реАрдПрдо, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдореВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдирд╣реАрдВ рд╣реИред рддреЛ рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдВрдбреЛрдЬ :-) рдХреЗ рд▓рд┐рдП рдмреИрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмреБрд░реА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рджреЗрд╢реА рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

@njsmith рдореЗрд░реЗ рдкрд░рд┐рдгрд╛рдо рднреА рдХрдореЛрдмреЗрд╢ рдЙрд╕реА рддрд░рд╣ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд▓реЗрдЦ рдореЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо MKL:

Dotted two 4096x4096 matrices in 2.09 s.
Dotted two vectors of length 524288 in 0.23 ms.
SVD of a 2048x1024 matrix in 1.11 s.
Cholesky decomposition of a 2048x2048 matrix in 0.19 s.
Eigendecomposition of a 2048x2048 matrix in 7.83 s.

рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рдореЗрд░реЗ рд╕реАрдкреАрдпреВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрдмрдХрд┐ MKL рдореЗрдВ рдХрдореЛрдмреЗрд╢ рдЪреАрдЬреЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред

@njsmith рдЙрд╕ рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рджреЗрд╢реА рдУрдПрд╕ рд╕рдорд░реНрдерди рдХреБрдЫ рднреА рдирд╣реАрдВ рдзрдбрд╝рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рднреА рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ @homocomputeris рдХреА рдЯрд╛рдЗрдорд┐рдВрдЧ рдХреА рдареАрдХ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рджреЗрд╢реА рддрд╛рд░ рдХреЗ рд╕рдорд░реНрдерди рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рдЗрди рджрд┐рдиреЛрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ? рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП, рд╕рдХрд╛рд░рд╛рддреНрдордХ, рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ, рд╕рдЯреАрдХ рдЧреБрдгрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ ...? (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛрдЧрд╛, рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдорд╛рдкреА рдЧрдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдордирдорд╛рдиреА рдкреНрд░рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реБрдиреНрди рд╕рд░рдгрд┐рдпрд╛рдБ рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред)

@njsmith рд╕рдВрд░реЗрдЦрд┐рдд? рдирд╣реАрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЙрд╕ рдмрд╛рдзрд╛ рдХреЛ рдЙрдард╛ рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдХреЗ рд╕рдЯреАрдХ рдЧреБрдгрдХ? рд╣рд╛рдБ, рдлрд┐рд░ рднреАред

рдореИрдВ @devinamatthews рдХреЛ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред рдорд╣реАрдиреЛрдВ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЙрд╕реЗ рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░рд╛рдЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдерд╛, рдФрд░ рдЙрд╕ рд╕рдордп рдЙрд╕рдХреЗ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдЕрдВрдХ / рдкреНрд░рд╢реНрди рдереЗ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИрдВред рдбреЗрд╡рд┐рди, рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдирд╛рдердирд┐рдпрд▓ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░реЗрдВ? рдзрдиреНрдпрд╡рд╛рджред

@homocomputeris рдХреНрдпрд╛ рдЖрдк size рд▓рд┐рдП рдХрд┐рд╕реА рднрд┐рдиреНрди рдорд╛рди рдХреЗ рд╕рд╛рде рдорд╛рдирджрдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рд▓реЗрдЦрдХ рдиреЗ рджреЛ (4096) рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдореВрд▓реНрдп BLIS рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЦрд░рд╛рдм рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ, рдФрд░ рд╡реИрд╕реЗ рднреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп 4000 (рдпрд╛ 3000 рдпрд╛ 2000) рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@homocomputeris рдФрд░ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдХрд┐ BLIS рдкрд░рд┐рдгрд╛рдо рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИрдВ, рдЬрдмрдХрд┐ MKL рдкрд░рд┐рдгрд╛рдо рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╣реИрдВ?

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред рдлрд┐рд▓рд╣рд╛рд▓ рдкреНрд░рд╛рдердорд┐рдХ рджрд░реНрдж рдмрд┐рдВрджреБ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИред MSVC рд╕рдВрдЧрдд рдмрд╛рдЗрдирд░реА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓реЗрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдВрдЧрд╡ рдХрд╛ рдореЗрдХрдУрд╡рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрд╕ рд╕рдордп рдХреЗ рд╕рд╛рде рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬрдм рдореИрдВ рдЙрд╕ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рднреАрддрд░, рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдЕрд╕реЗрдВрдмрд▓реА рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрдХреНрд░рдордг рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдореЗрдВ рдПрдХ рдФрд░ рдмрд╛рдзрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПред Https://github.com/flame/blis/issues/220#issuecomment -397842370 рдФрд░ https://github.com/flame/blis/pull/224 рджреЗрдЦреЗрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрд╡рдпрдВ рдХреБрдЫ рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ / ifdefs MSVC рдкрд░ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рджреВрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ MSVC рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ BLIS рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

@insertinterestingnamehere, рдЗрдорд╛рди рдореЗрдВ рдЪреАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдк рд╕рд╣реА рд╣реИрдВ рдХрд┐ рдкреБрдирдГ-рдореИрдХреНрд░реЛрдЗрдХ рдЕрд╕реЗрдВрдмрд▓реА рдХрд░реНрдиреЗрд▓ MSVC рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд░реАрдм рдПрдХ рдХрджрдо рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдмрддрд╛рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рдереАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, MSVC рдЕрднреА рддрдХ C99 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдПрдХ рдФрд░ рдмрд╛рдзрд╛ рд╣реИред (BLIS рдХреЛ C99 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред)

рдЦреИрд░, рдореИрдВрдиреЗ рдКрдкрд░ рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ BLIS рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреБрд▓рдиреАрдп рд╣реИ, рдЗрд╕реАрд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ: рд╕реНрдорд╛рдЗрд▓реА:

  • рдЗрдВрдЯреЗрд▓ рдХреЛрд░ i5-6260U рдирд╡реАрдирддрдо BIOS рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рд╕реНрдкреЗрдХреНрдЯрд░ / рдореЗрд▓реНрдЯрдбрд╛рдЙрди рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рдкреИрдЪ рд╣реИ
  • рд▓рд┐рдирдХреНрд╕ 4.17.3-1-ARCH
  • рд╕рдм рдХреБрдЫ рдЬреАрд╕реАрд╕реА 8.1.1 20180531 рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • NumPy 1.15.0rc1
  • рдореИрдВрдиреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рдЪреБрдирд╛ рд╣реИ

Intel MKL 2018.3 2 рдереНрд░реЗрдбреНрд╕ рддрдХ рд╕реАрдорд┐рдд рд╣реИ (рдЕрд░реНрдерд╛рдд, рдореЗрд░рд╛ рднреМрддрд┐рдХ CPU рдХреЛрд░):

Dotted two 3851x3851 matrices in 1.62 s.
Dotted two vectors of length 492928 in 0.18 ms.
SVD of a 1925x962 matrix in 0.54 s.
Cholesky decomposition of a 1925x1925 matrix in 0.10 s.
Eigendecomposition of a 1925x1925 matrix in 4.38 s.

BLIS 0.3.2 рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд
CFLAGS+=" -fPIC" ./configure --enable-cblas --enable-threading=openmp --enable-shared x86_64

Dotted two 3851x3851 matrices in 3.82 s.
Dotted two vectors of length 492928 in 0.39 ms.
SVD of a 1925x962 matrix in 12.82 s.
Cholesky decomposition of a 1925x1925 matrix in 2.02 s.
Eigendecomposition of a 1925x1925 matrix in 67.80 s.

рддреЛ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ BLIS рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ Numix рджреНрд╡рд╛рд░рд╛ Unix / POSIX / рдХреБрдЫ рднреА-рдЬреИрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ usecase рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ 'рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рди рдЫреБрдПрдВ'
рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд╣ MKL / BLIS рдФрд░ LAPACK / libFLAME рдХреЗ тАЛтАЛрдмреАрдЪ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИред рдЗрдВрдЯреЗрд▓ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ BLAS рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдИ рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬреИрд╕реЗ LAPACK, FFT рдЖрджрд┐ред

@fgvanzee BLIS рдХреЗ рд▓рд┐рдП 2 рдЦрд░рд╛рдм рдХреНрдпреЛрдВ рд╣реИ? рдЕрдЧрд░ рдпрд╣ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдПрдлрдПрдлрдЯреА рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдХреЛрд▓рд╛рдХреЛрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИред

Numpy рдПрдЯ рдЕрд▓ рдХреЗ рд▓рд┐рдПред, рдпрд╣ MinGW / MSYS2 рдореЗрдВ рдЗрдорд╛рд░рдд рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ --- рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ рдкрд░ openblas рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд░ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд╣реИ) рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдпрд╣ "рдкрд╛рд░рдВрдкрд░рд┐рдХ" рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реАрдЖрд░рдЯреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ BLAS / LAPACK рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИред

@ Fgvanzee C99 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред C99 рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░реЗрдВ, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ MSVC 2017 рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ (https://docs.microsoft.com/en-us/cpp/visual-cpp-language-conformance#note_D) рддрдп рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@fgvanzee @njsmith рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рд╣рдо рдордирдорд╛рдиреЗ рдмрд╛рдЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

1) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рд╕рдореАрдЪреАрди рдЪреАрдЬрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ stride_units рдзреНрд╡рдЬ рдХреА рддрд░рд╣ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
2) рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯреНрд╕ рд╕реНрдЯреНрд░рд╛рдЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЗрдВрдЯрд░реНрдирд▓ рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░реЗрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
3) рдЬрдм рдкреИрдХрд┐рдВрдЧ, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдВрд░реЗрдЦрдг рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдХрд┐рдВрдЧ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
a) рд╕рд╛рдорд╛рдиреНрдп рдкреИрдХрд┐рдВрдЧ рдХрд░реНрдиреЗрд▓ рдХреЛ memcpy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ рдЖрдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрдирд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЪреВрд╕рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
4) рдЬрдм C рдЕрдирд▓рдЧрдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ memcpy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╛рдЗрдХреНрд░реЛрдХрд░реНрдиреЗрд▓ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрд╣ рд╕рд┐рд░реНрдл рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрджрд┐ alpha рдФрд░ beta рдордирдорд╛рдиреА рд╕рдВрдХреЗрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдФрд░ рднреА рдореБрджреНрджреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ x86 рдкрд░ рдЖрдк рдмрд┐рдирд╛ рдареАрдХ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝ / рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (espред ARM) рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред рдХрдВрдкрд╛рдЗрд▓рд░ рдСрдЯреЛ-рд╡реЗрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд░реЗрдЦрдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рднреА рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@homocomputeris :

  1. рдореЗрд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдпрд╣ рдирд╣реАрдВ рдерд╛ рдХрд┐ рджреЛ рдХреА рд╢рдХреНрддрд┐рдпрд╛рдБ рдХрднреА "рдЬрдВрдЧрд▓реА рдореЗрдВ" рдирд╣реАрдВ рдирд┐рдХрд▓рддреА рд╣реИрдВ, рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╡реЗ рд╡рд╛рдпрд╛рдЪреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдУрд╡рд░рд░рд┐рдкреЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╕рдВрднрд╡рдд: рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░-рдЙрдиреНрдореБрдЦ рдорд╛рдирд╡ рджреЛ рдХреА рд╢рдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред :)
  2. рд╡реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЕрдЧрд░ рдЗрд╕ рдЕрдЧрд▓реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ "рдирд╣реАрдВ" рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЧрд▓рддреА рд╕реЗ рджреЛрдиреЛрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛ рдПрдордХреЗрдПрд▓ (рдпрд╛ рдмреАрдПрд▓рдЖрдИрдПрд╕) рд╕реЗ рдЬреЛрдбрд╝ рджрд┐рдпрд╛?
  3. рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрдлрдПрдлрдЯреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рджреЛ рдХреА рд╢рдХреНрддрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред рдореИрдВ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВред :)
  4. BLIS рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЪрд┐рдВрддрд╛ рджреЛ рдХреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ BLIS рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд┐рд╕ рдШрдЯрдирд╛ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ BLIS рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛ, рдФрд░ рдЗрд╕рд▓рд┐рдП BLL рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реБрджреНрдз "рджрдВрдб" рд╣реИ рдЬреЛ MKL рдЬреИрд╕реЗ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИред рдЪрд┐рдВрддрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдЬрдм рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдЖрдпрд╛рдо рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ "рдЕрдЧреНрд░рдгреА рдЖрдпрд╛рдо" рднреА рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИред (рдЕрдЧреНрд░рдгреА рдЖрдпрд╛рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕реНрддрдВрдн-рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реЛрдиреЗ рдкрд░, рдпрд╛ рдкрдВрдХреНрддрд┐-рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдкрдВрдХреНрддрд┐ рдХреЗ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рд╕реНрддрдВрдн рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред) рдЖрдЗрдП рдПрдХ рдкрд▓ рдХреА рдкрдВрдХреНрддрд┐ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдорд╛рди рд▓реЗрдВред рдЬрдм рдЕрдЧреНрд░рдгреА рдЖрдпрд╛рдо рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ, рддреЛ рдХреИрд╢ рд▓рд╛рдЗрди рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡ (i, j) рдЙрд╕реА рд╕рдорд░реВрдкрддрд╛ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ рдЬреЛ рдХреИрд╢ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡ (i + 1, j), (i + 2, j) рд╣реЛрддреЗ рд╣реИрдВ , (i + 3, j) рдЖрджрд┐ рд░рд╣рддреЗ рд╣реИрдВ - рдЕрд░реНрдерд╛рдд, рдмрд╛рдж рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рди рддрддреНрд╡ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм gemm рдСрдкрд░реЗрд╢рди рдЕрдкрдбреЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рд╕реА рдХреА рдПрдХ рдбрдмрд▓-рд╕рдЯреАрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ 6x8 рдорд╛рдЗрдХреНрд░реЛрдЯрд╛рдЗрд▓, рд╡реЗ 6 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рднреА рдореИрдкреНрд╕ рдХреЛ L1 рдХреИрд╢ рдореЗрдВ рд╕реЗрдЯ рдХреА рдЧрдИ рд╕рдорд╛рди рдПрд╕реЛрд╕рд┐рдПрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдмреЗрджрдЦрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпреЗ рддрдерд╛рдХрдерд┐рдд рд╕рдВрдШрд░реНрд╖ рдорд┐рд╕ рд╣рдорд╛рд░реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдХрднреА-рдХрднрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рджрд░реНрд╢рди рд╣рд┐рдЯ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдП рдФрд░ рдмреА рдореИрдЯреНрд░реАрдХ рдХреЛ рдкреИрдХ / рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЙрддрдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реА рдХреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдореЗрдореЛрд░реА рдХреЙрдкреА рд╣рд┐рдЯ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рдЕрдЧреНрд░рдгреА рдЖрдпрд╛рдо рдореЗрдВ рдкреИрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рдЗрд▓рд╛рдЬ рдмреАрдорд╛рд░реА рд╕реЗ рднреА рдмрджрддрд░ рд╣реЛрдЧрд╛ред) рдЕрдм, рдПрдордХреЗрдПрд▓ рдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдХрд░реНрдирд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬреЛ рд╕рдВрдШрд░реНрд╖ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдпрд╛ рд╢рд╛рдпрдж рд╡реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ BLIS рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗред
  5. рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ MKL рд╕рд┐рд░реНрдл BLAS + LAPACK рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдПрдордХреЗрдПрд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдпреЛрдЬрд┐рдд, рдмрдВрдж-рд╕реНрд░реЛрдд рд╕рдорд╛рдзрд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ "рдореБрдлреНрдд рдореЗрдВ" рдЧреИрд░-рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯреЗрд▓ рдПрдордХреЗрдПрд▓ рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрдирддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╛ рдлрд┐рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭреЗ рдЧрдП рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреЛрдВ рдкрд░ рд╣рдорд╛рд░реЗ рд╢реЛрдз рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдФрд░ рдЖрдк рдЕрдкрдиреЗ рджрд┐рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВ, рдФрд░ рдЖрдк рдЗрд╕реЗ BLAS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред :)

@fgvanzee рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореЗрд░рд╛ рдмреБрд░рд╛, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдПрдордХреЗрдПрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рд╣реБрдЖ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд░рдЦрд╛ рдерд╛ред
SVD рдФрд░ EVD LAPACK рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВ?

@homocomputeris рд╣рд╛рдБ, LAPACK рдПрд╕рд╡реАрдбреА рдФрд░ рдИрд╡реАрдбреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдордХреЗрдПрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреЗрд╣рдж рддреЗрдЬ рд╣реЛрдЧрд╛ред

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

NumPy 2018 рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╛рдпрдерди 2.7 рдФрд░ 3.4 рд╕рдорд░реНрдерди рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХ рд╣рд╛рд▓ рдХреЗ MSVC рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреЛ C99 рдЖрдЬреНрдЮрд╛рдХрд╛рд░реА рд╣реИрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ 2.7 рд╕рдорд░реНрдерди рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдЪрд╛рд▓ рдХреЛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓ рдХреЗ MSVC рд╕рдВрдХрд▓рдХ рдореЗрдВ C99 рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП http://tinyurl.com/yazmczel рджреЗрдЦреЗрдВред рд╕рдорд░реНрдерди рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ (рдХреНрдпрд╛ рдХреЛрдИ рдкреВрд░реНрдг рд╣реИ?) рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рд╣реА NumPy рдХреЛ C99 рдореЗрдВ рд▓реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ (Intel) рдиреЗ рдмреЗрд╣рддрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИред

@charris рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЪрд╛рд░реНрд▓реНрд╕ред рд╢рд╛рдпрдж рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рдЬреЛ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд╡рд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рд╣рдо рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рддрдм рддрдХ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЧреЛрдж рд▓реЗрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рдПрдордХреЗрдПрд▓ рдХреЛ рд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдЗрд╕рдХрд╛ рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдпреЛрдЧреА OpenBLAS рд╣реИред

рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЧреЛрдж рд▓реЗрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рдПрдордХреЗрдПрд▓ рдХреЛ рд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдЗрд╕рдХрд╛ рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдпреЛрдЧреА OpenBLAS рд╣реИред

рдЕрдзрд┐рдХ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛ред MKL рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдХ рд▓реАрдЧ рдореЗрдВ рд╣реИред

@njsmith рдмрд╕ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ: рдирдП рдПрдкреАрдЖрдИ / рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕реБрдкреАрд░рд┐рдпрд░ рд╕рдореБрджрд╛рдп рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА рдХрд┐рддрдиреА рд╣реЛрдЧреА рдЬреЛ рдорд┐рд╢реНрд░рд┐рдд рд╕рдЯреАрдХрддрд╛ рдФрд░ / рдпрд╛ рдорд┐рд╢реНрд░рд┐рдд рдбреЛрдореЗрди рдореЗрдВ gemm рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ? рдпрд╣реА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдВрдб рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрдЧрдгрдирд╛ рдП (рдмреА) рдХреЗ рдПрдХ рдпрд╛ рджреЛрдиреЛрдВ рд╕реЗ рднрд┐рдиреНрди рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ (рд╕рдВрднрд╛рд╡рд┐рдд) рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ?

@fgvanzee рд░реБрдЪрд┐, рд╣рд╛рдБ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрдпреЛрдЬрди рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдЦреНрдпрд╛

рдФрд░ рд╣рдореЗрд╢рд╛ рдлреНрд▓реЛрдЯ 16 рд╣реЛрддрд╛ рд╣реИред рдПрдордПрд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред @GaelVaroquaux рд╡рд┐рдЪрд╛рд░?

@charris рд╣рд╛рдБ, рдорд╛рдорд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреА рд╣реИред рдЪрд╛рд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдбреЗрдЯрд╛реИрдЯрд┐рдкреНрд╕ рдорд╛рдирддреЗ рд╣реБрдП gemm рд▓рд┐рдП 128 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рд╢рди / рд╕рдВрдпреБрдЧреНрдорди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ (рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рдКрдкрд░ рдЬрд╛рдПрдЧреА) рд╕реЗ рдХрд┐рд╕реА рднреА рдХреЙрдореНрдмреАрдиреЗрдЯрд░ рдореБрджреНрд░рд╛рд╕реНрдлреАрддрд┐ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддреА рд╣реИред 55,296)ред

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдХрдо-рдкреНрд░рджрд░реНрд╢рди рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА 128 рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реЛрдЧрд╛, рдФрд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рддрд░реАрдХреЗ рд╕реЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдХрд┐ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдирд╛ рдХрд╛рдлреА рд╡рд┐рд╢реЗрд╖ рд╣реЛрдЧрд╛ред (рдФрд░, BLIS рдХреА рд╡рд╕реНрддреБ-рдЖрдзрд╛рд░рд┐рдд рдиреАрдВрд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЗ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд╣реБрдд рдХрдо рд▓рд╛рдЧрдд рдЖрдПрдЧреАред)

рдпрджрд┐ рдпрд╣ рдЖрдкрдХреА рд░реБрдЪрд┐ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд┐рдиреЛрдВ / рд╣рдлреНрддреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреЗрдЦреЗрдВред :)

рдХреНрдпрд╛ BLIS рдХрд╛рдВрдЯрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЧреЛрдж рд▓реЗрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рдПрдордХреЗрдПрд▓ рдХреЛ рд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдЗрд╕рдХрд╛ рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдпреЛрдЧреА OpenBLAS рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдореИрдВ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ NumPy + BLAS рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрджреНрдзреГрдд рдХрд┐рдП рдЧрдП рд▓реЗрдЦ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рд╣реИред
рдпрджрд┐ NumPy рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рд╕рдВрднрд╡рддрдГ, libFLAME LAPACK рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдПрдордбреА рдХреЗ BLIS / libFLAME рдХрд╛рдВрдЯреЗ рдХреЛ рдЕрдкрдиреЗ рдирд╡реАрдирддрдо рдЬрд╝реЗрди рд╕реАрдкреАрдпреВ рдкрд░ рдмреЗрдВрдЪ рдХрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдХреЛрдИ рд╕реБрдзрд╛рд░ рдорд┐рд▓рд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдпрд╣ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╕реБрдкреА рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╣рд┐рдпреЛрдВ рдореЗрдВ OpenBLAS рдХреА рдПрдХ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдкреНрд░рддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ pip install numpy ред (рдмреЗрд╢рдХ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рдЪрд╛рд░ рджреЗ рд╕рдХрддрд╛ рд╣реИред)

рдХреНрдпрд╛ BLIS рдХрд╛рдВрдЯрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?

@ рдЬрдХреАрд░рдЦрд╛рдо рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ @devinamatthews рд╕реЗ рдмрд╛рдд рдХреА, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рд╣рд╛рдВ рд╣реИред BLIS рдереНрд░реЗрдб рдорд╛рдВрдЧрддрд╛ рд╣реИ, (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм OpenBLAS рдХрд░рддрд╛ рд╣реИ рддреЛ рдереНрд░реЗрдб рдкреВрд▓ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп gemm рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдЙрддреНрд╕реБрдХ рд╣реИрдВ: рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдереНрд░реЗрдбрд┐рдВрдЧ рдореЙрдбрд▓ рд╕реБрдиреНрди рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ / рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ / рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ? рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдореЗрдВ рдХрдИ рдмрд╣реБрдд рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдбрд┐рдВрдЧ рдкреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? (BLIS рдХреА рдСрди-рдбрд┐рдорд╛рдВрдб рдереНрд░реЗрдбрд┐рдВрдЧ рдЙрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИред)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдПрдХ рд╕рдорд╛рди рдирд╕ рдореЗрдВ, рдХреНрдпрд╛ рдЖрдкрдХреЛ pthreads рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдЖрдк OpenMP рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИрдВ?

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рддреЛ рдпрд╣ pthreads, OpenMP, рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдЬреАрд╕реАрд╕реА рдХреЗ рдУрдкрдирдПрдордкреА рдФрд░ рдлреЛрд░реНрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬреНрдЮрд╛рдд рдореБрджреНрджреЗ рд╣реИрдВ рдХрд┐ @ рд╣реЛрдЧреНрд░рд┐рд╕рд▓ )ред рдкрд╛рдпрдерди рдореЗрдВ multiprocessing рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ forking рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рд╕рдмрд╕реЗ рдЖрдо рд╕рдорд╛рдирддрд╛рд╡рд╛рдж рд░рдгрдиреАрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдХрд╛рдВрдЯрд╛-рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдзрд╛рдЧреЗ (рдЕрдзрд┐рдорд╛рдирддрдГ рдКрдкрд░ рдХреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП pthreads) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдЖрдорддреМрд░ рдкрд░ рдкрд╛рдпрдерди рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрди рджрд┐рдиреЛрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдВрд╕реА рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдЬреЛ рдХрд╛рдВрдЯрд╛-рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирдерд╛рдирд┐рдПрд▓ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреА рд╢реБрд░реВ рдХреА рд╣реИ, IIUC NumPy рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдЬреИрд╕реЗ BLAS) рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЦреБрдж рдХреЛ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдиреНрдпреВрдордкреА GIL рдХреЛ рдЕрдХреНрд╕рд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд╛рдпрдерди рдореЗрдВ рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рддрд╛ рд╣реИред Joblib, Dask, рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдЗрд╕ рд░рдгрдиреАрддрд┐ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреА рд╣реИрдВред

рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рджреВрд╕рд░реЗ рджрд┐рди рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдордПрд▓ рддрдХрдиреАрдХ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдХрд┐ рдиреНрдпреВрдЯрди / рд╕рд╛рдЗрдкреЗрдкреА рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдореЗрдВ BLAS рджрд┐рдирдЪрд░реНрдпрд╛ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд░рддрд╛ рд╣реИред рдУрдкрдирдмреАрдПрд▓рдПрдПрд╕ рдФрд░ рдХреЛрд░ рдХреА рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рджрд┐рдирдЪрд░реНрдпрд╛ рд░реВрдЯреАрди рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдХреЛ рд╕рдВрддреГрдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╛рдпрдерди (рдиреНрдпреВрдордк рдФрд░ рд╕рд╛рдЗрдкреА рд╕рд╣рд┐рдд) рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдУрдкрдирдмреНрд▓рд┐рд╕ рдиреЗ рд▓рдВрдмрд╛рдИ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдереНрд░реЗрдбрдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рджрд┐рдирдЪрд░реНрдпрд╛ред рддреЛ рд╣рд╛рдБ рдереНрд░реЗрдб рдкреВрд▓ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИрдВред

рдПрдХ рдЕрд▓рдЧ рдмрд┐рдВрджреБ рдкрд░, рдХреНрдпрд╛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЧрддрд┐рд╢реАрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ? рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@jakirkham рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдереНрд░реЗрдб рдкреВрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рдордирд╛рдпрд╛ рд▓рд╛рдЧрдд рдЙрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдСрдкрд░реЗрдВрдб рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧреА рдЬреЛ рдЖрдк рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдХреМрди рд╕рд╛ рдСрдкрд░реЗрд╢рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ gemm рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рд╕рд╣реА рдХрд░реЗрдВ), рд▓реЗрдХрд┐рди рдЖрдк рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдирддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдмрд╛рд░-рдмрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛, рдЬрд╣рд╛рдВ рдП, рдмреА, рдФрд░ рд╕реА 40x40 рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ / рдмрдирд╛рдиреЗ рдХреЗ рдореЙрдбрд▓ рдХреА рд▓рд╛рдЧрдд рдкреНрд░рдХрдЯ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж 400x400 рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред (рдЯреАрдмреАрдПрдЪ, рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ 40x40 рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧрддрд┐ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред)

рдПрдХ рдЕрд▓рдЧ рдмрд┐рдВрджреБ рдкрд░, рдХреНрдпрд╛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЧрддрд┐рд╢реАрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ? рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдБред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ 2017 рдХреЗ рдЙрддреНрддрд░рд╛рд░реНрдз рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред BLIS рдЕрдм рддрдерд╛рдХрдерд┐рдд "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд╛рд░реЛрдВ" рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдЙрдкрдЪрд╛рд░рд╛рддреНрдордХ (рдЬреИрд╕реЗ cpuid рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЪреБрдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдк-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рдеред intel64 , amd64 , x86_64 ред

@fgvanzee рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдЯреНрд░рд┐рд╕ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд╛рдЬрдирдХ рд╣реИ рдЕрдЧрд░ BLIS рдлрд┐рд░ рд╕реЗ рдзреАрдорд╛ рд╣реИ ... рд▓реЛрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдорд╣рддреНрд╡ рджреЗрддреЗ рд╣реИрдВред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ "рдмрд╕ рдХрд╛рдо"ред (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрд▓рд╛рд╕рд┐рдХ рдШрдиреЗ рд░реЗрдЦреАрдп рдмреАрдЬрдЧрдгрд┐рдд рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рдЬрд╣рд╛рдВ рджреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдорд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓реЗрдЦрдХ рдЪрд▓ рд░рд╣реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╡рд┐рд╢реЗрд╖ sysadmins рдХреЗ рд╕рд╛рде рд╕рдкреНрддрд╛рд╣ рднрд░ рдХреА рд╕реБрдкрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рдиреМрдХрд░рд┐рдпрд╛рдВ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВред) рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдЧ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред 3x3 рдорд╛рддреГрд╡рдВрд╢ред

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рдВрдШрди рд╣реЛ рд░рд╣реА рд╣реИред 3x3 рд░рддреНрди рдХреЗ рд▓рд┐рдП, рдЗрд╖реНрдЯрддрдо рдЪреАрдЬ рд╕рдВрднрд╡рддрдГ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдмреЗрд╡рдХреВрдл рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЯреНрд╡реАрдХрд┐рдВрдЧ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдереНрд░реЗрдб-рдкреВрд▓-рдмрдирд╛рдо-рдереНрд░реЗрдб-рдкреВрд▓ рдЪреАрдЬрд╝) рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рдореЗрдВ рдХреВрдж рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рддреИрдирд╛рддреА рдорд┐рд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ: рдореИрдВ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдХрд┐рд╕реА рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд╣ рдЬреЗрдо рдХреЛ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рд╡рд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд┐рд░рд╛рд╢ рдерд╛ рдХрд┐ рд╕реНрдЯреИрдгреНрдбрд░реНрдб рдмреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдЬреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕рд╡рд╛рд░реА рд╣реИред рдХреНрдпрд╛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХрд╛ рдореВрд▓ рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЙрд▓-рдмрд╛рдп-рдХреЙрд▓ рдЖрдзрд╛рд░ рдкрд░ рдереНрд░реЗрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ? рдореИрдВ рд╣рд╛рдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ IIRC рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ BLAS рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рдХреЗ рдмрд╛рд╣рд░ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ?

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдУрдкрдирдмреАрдПрдПрд╕рдПрдПрд╕ рдХреЗ рдХрдордЬреЛрд░ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рдЫреЛрдЯреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд╛рдЬрдирдХ рд╣реИ рдЕрдЧрд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдлрд┐рд░ рд╕реЗ рдзреАрдорд╛ рд╣реИ ... рд▓реЛрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдорд╣рддреНрд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ " рдХрд╛рдо "рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред

рдореИрдВ рдЗрд╕реЗ "рд╕рд┐рд░реНрдл рдХрд╛рдо" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдФрд░ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ 3x3 рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╢рд╛рдпрдж BLIS рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдмреАрдПрд▓рдЖрдИрдПрд╕ 3x3 рдХреЗ рд▓рд┐рдП рдПрдХ рднреЛрд▓реА рдЯреНрд░рд┐рдкрд▓ рд▓реВрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10x рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓реЗрдЧрд╛, рдмрд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рд╕реБрдирдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдЖрдк рдЫреЛрдЯреА-рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП OpenBLAS рд╕реЗ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдЖрдкрдХрд╛ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╣реИ? рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд░рдгрдиреАрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХреЗрд╡рд▓ рдЧреИрд░-рд▓рдХреНрд╖рд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЛ рдЙрдк-рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рддреА рд╣реИрдВред

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рдВрдШрди рд╣реЛ рд░рд╣реА рд╣реИред 3x3 рд░рддреНрди рдХреЗ рд▓рд┐рдП, рдЗрд╖реНрдЯрддрдо рдЪреАрдЬ рд╕рдВрднрд╡рддрдГ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдмреЗрд╡рдХреВрдл рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдХрдЯрдСрдл рдЖрджрд░реНрд╢ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрд┐ рдХрдЯрдСрдл рдХрд╣рд╛рдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЧреИрд░-рддреБрдЪреНрдЫ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ (рдФрд░ рд╕реНрддрд░ -3 рдХреЗ рд╕рдВрдЪрд╛рд▓рди) рджреНрд╡рд╛рд░рд╛ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛)ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЯреНрд╡реАрдХрд┐рдВрдЧ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдереНрд░реЗрдб-рдкреВрд▓-рдмрдирд╛рдо-рдереНрд░реЗрдб-рдкреВрд▓ рдЪреАрдЬрд╝) рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рдореЗрдВ рдХреВрдж рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рддреИрдирд╛рддреА рдорд┐рд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╣рд╛рдБред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ: рдореИрдВ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдХрд┐рд╕реА рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд╣ рдЬреЗрдо рдХреЛ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рд╡рд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд┐рд░рд╛рд╢ рдерд╛ рдХрд┐ рд╕реНрдЯреИрдгреНрдбрд░реНрдб рдмреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдЬреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕рд╡рд╛рд░реА рд╣реИред

рдПрдХ рдорд▓реНрдЯреАрдереНрд░реЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ gemm рд╣рдорд╛рд░реЗ рдкрд╕рдВрджреАрджрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред (рдЕрдиреБрд╕реНрдорд╛рд░рдХ: рдпрджрд┐ рдЕрдиреБрдХреНрд░рдорд┐рдХ gemm рдЙрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХреЗрд╡рд▓ BLIS рдХреЛ рдЕрдХреНрд╖рдо рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╡рд╣ рдПрдХ рдмрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИред)

рдХреНрдпрд╛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХрд╛ рдореВрд▓ рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЙрд▓-рдмрд╛рдп-рдХреЙрд▓ рдЖрдзрд╛рд░ рдкрд░ рдереНрд░реЗрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ? рдореИрдВ рд╣рд╛рдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ IIRC рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ BLAS рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рдХреЗ рдмрд╛рд╣рд░ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ?

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

рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╡рд╣ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рдорд╛рдирддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдмреАрдПрд▓рдЖрдИрдПрд╕ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░рддрд╛ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ рдЕрднреА рднреА setenv() рдФрд░ getenv() рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ BLIS рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ рд░реАрдбрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд╡рд┐рдХреА рджреЗрдЦреЗрдВред) рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреЛрд╕реНрдд рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕реМрджрд╛-рдмреНрд░реЗрдХрд░ рд╣реИред рд╣рдо рдПрдХ рдПрдкреАрдЖрдИ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рддрдХ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдЕрдзрд┐рдХрддрд░ рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ; рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╕рднреА рдЬрдЧрд╣ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╣реИрдВ (рдЬреИрд╕реЗ OMP_NUM_THREADS , рдЖрджрд┐) рдЬрдм рдПрдХ рдирдВрдмрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рд╕реВрдЪрдирд╛ рдХрд╛ рдПрдХ рд╕рдХрд▓ oversimplification рд╣реИ; рд╣рдорд╛рд░реЗ gemm рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдкрд╛рдВрдЪ рдЫреЛрд░реЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЪрд╛рд░ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд╛рдВрдЪ) рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЯреЛрдкреЛрд▓реЙрдЬреА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕ рдореЛрд░реНрдЪреЗ рдкрд░ рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдмрд╛рдзрд╛ рдЖ рд░рд╣реА рд╣реИред

@devinamatthews рдЙрд╕реА рдирд╕ рдХреЗ рд╕рд╛рде TBLIS рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛?

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ 3x3 рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╢рд╛рдпрдж BLIS рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдмреАрдПрд▓рдЖрдИрдПрд╕ 3x3 рдХреЗ рд▓рд┐рдП рдПрдХ рднреЛрд▓реА рдЯреНрд░рд┐рдкрд▓ рд▓реВрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10x рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓реЗрдЧрд╛, рдмрд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдореИрдВ 3x3 рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!)ред рд▓реЗрдХрд┐рди рдПрдХ рдЪрд░рдо рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП: рдпрджрд┐ рд╕реБрдиреНрдирдд рдХреЛ рдЙрд╕рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ a @ b рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ 10x рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рднреЛрд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВред 3x3 рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реБрдиреНрди рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ :-) рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдЦрд╛рд╕рддреМрд░ рдкрд░ рдЙрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдмрд╛рдж рдЬреЛ рдПрдХ рдЬрдЧрд╣ 3x3 рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░реА рдЬрдЧрд╣ 1000x1000 рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рднреА рдЧреБрдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдиреБрд╕реНрдорд╛рд░рдХ: рдпрджрд┐ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдордгрд┐ рдЙрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рд╡рд╣ рдмрд╕ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЕрдХреНрд╖рдо рдХреЗ рд╕рд╛рде BLIS рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рдПрдХ рдмрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИред

рд╡рд╣ рдПрдХ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЗрд╕реЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рд╕рднреА рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рд╛рде рдЪрд▓реЗрдВрдЧреЗред рдЙрдирдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА GEMM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдХреЛрдб рдЬреЛ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирддрд╛ рд╣реИ - рд╡реЗ рднреАEMEM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рд╡рд╣ GEMM рдХреЛ рдЕрдкрдиреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЧрд▓рддреА рд╕реЗ рдЕрдиреНрдп рдЕрд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓ GEMM рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╡рд╣ GEMM рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐ рдХреЛ рд╢рд┐рдк рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдареАрдХ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рдФрд░ рдпрд╣ рднреА рдПрдХ рддрд░рд╣ рдХреА рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдХреНрд░рд╛рдордХ рд╣реИ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддреЛ рдЖрдк рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЪрд░ number_of_threads рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдЬрд╝реНрдпрд╛рджрд╛ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ?

рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╢рд╛ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рднреЛрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10x рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдЕрдм рдЬрдм рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯреА (3x3) рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреЛрд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рдзреАрдорд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреНрд░реЙрд╕рдУрд╡рд░ рдмрд┐рдВрджреБ рдХрдо рд╣реЛрдЧрд╛, рд╢рд╛рдпрдж 16x16 рдЬрд┐рддрдирд╛ рдЫреЛрдЯрд╛ред рдФрд░ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░ рдПрдХ рдмреИрдВрдб рд╕рд╣рд╛рдпрддрд╛ рдбрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╕рд░рд▓ рд╣реИред (рдореИрдВ рдЗрд╕реЗ рд╕рднреА рд▓реЗрд╡рд▓ -3 рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред)

рд╡рд╣ рдПрдХ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЗрд╕реЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рд╕рднреА рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рд╛рде рдЪрд▓реЗрдВрдЧреЗред рдЙрдирдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА GEMM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдХреЛрдб рдЬреЛ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирддрд╛ рд╣реИ - рд╡реЗ рднреАEMEM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рд╡рд╣ GEMM рдХреЛ рдЕрдкрдиреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЧрд▓рддреА рд╕реЗ рдЕрдиреНрдп рдЕрд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓ GEMM рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╡рд╣ GEMM рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐ рдХреЛ рд╢рд┐рдк рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдареАрдХ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рдФрд░ рдпрд╣ рднреА рдХрд┐ рдпрд╣ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдХреНрд░рд╛рдордХ рд╣реИ рдХрд┐ рдПрдХ рдмрдбрд╝реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рджреЛ рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддреЛ рдЖрдк рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛_of_threads рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдЬрд╝реНрдпрд╛рджрд╛ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ?

рд╣рд╛рдВ, рдпрд╣ рдЙрдкрдпреЛрдЧреА рдерд╛ - рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рд╣рдорд╛рд░реА рдЕрднреА рддрдХ рдХреА-рдереНрд░реЗрдбрд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрджрд░реНрд╢ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реЛрдЧрд╛ред (рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд╕рдореНрдореЗрд▓рди рд╕реАрдорд╛ рд░реЗрдЦрд╛ рдкрд╛рдЧрд▓рдкрди рд╣реИ рдФрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрд╡рд╕рд░ рдкрд░ рдореЗрд░реА рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдореЗрд░реА рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдиреЗ рдХрд╣рд╛, рдпрд╣ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдПрдЪрдкреАрд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / benchmarkers рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдкрдЯреНрдЯреА рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рддреЛ рд╣рдо рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ рдПрдХ рдЙрдЪрд┐рдд рд░рдирдЯрд╛рдЗрдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рддрд╛рдХрд┐ рд╣рд░ рдХреЛрдИ рдЦреБрд╢ рд░рд╣реЗред)

рдХреНрдпрд╛ рдЖрдк рдЙрд╕реЗ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд░рдбрд╛рд░ рдкрд░ рд╣реИ? рдореИрдВ рд░реЙрдмрд░реНрдЯ рдХреЗ рд╕рд╛рде рдШреБрд▓рдорд┐рд▓ рдЬрд╛рдКрдВрдЧрд╛ред рд╡рд╣ рдЗрддрдиреА рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рд╕рдордп рдореЗрд░реЗ рдЦрд░реНрдЪ рд╕рдордп рдХреЛ рдордВрдЬреВрд░реА рджреЗ рд╕рдХреЗред (рдереНрд░реЗрдбрд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреА рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рдкрд░ рд╣реИред)

MSVC ABI рдХреЛ рд▓рдХреНрд╖реНрдп рдХрд░рдХреЗ clang.exe рдХреЗ рд╕рд╛рде рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдкрд░ BLIS рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП рдФрд░ рдпрд╣рд╛рдВ рдХреЗ рдмрджрд▓рд╛рд╡ рд╣реИрдВред OpenBLAS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрдо рдереАред
рд▓реЙрдЧ рдпрд╣рд╛рдБ рд╣реИ ред рд╕рднреА рдмреАрдПрд▓рдЖрдИрдПрд╕ рдФрд░ рдмреАрдПрд▓рдПрдПрд╕ рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

@isuruf рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЦреБрдж рдХреЛ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЛрдЧреНрдп рдирд╣реАрдВ рдорд╛рдирддрд╛ рдХрд┐ рдпрд╣ рд╕рдВрдЦреНрдпрд╛рдмрд▓ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ (рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ), рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдирдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЯрд╛рд▓ рджреВрдВрдЧрд╛ред

рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ / рдЕрдиреБрд░реЛрдз (рд╕рднреА рдХрд╛рдлреА рдорд╛рдореВрд▓реА) рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред

рдкреБрдирд╢реНрдЪ: рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЖрдк f2c рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдореИрдВрдиреЗ BLAS рдкрд░реАрдХреНрд╖рдг рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрд░реЛрдд рдореЗрдВ libf2c рдХреЗ рдмрд╕ рдкрд░реНрдпрд╛рдкреНрдд рднрд╛рдЧреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ ( libf2c.a рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд) рддрд╛рдХрд┐ рдЪреАрдЬреЗрдВ рд▓рд┐рдВрдХ рд╣реЛ рдЬрд╛рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдХреБрдЫ рд╣реИрдХрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред (рдореИрдВ рдлреЛрд░рдЯреНрд░рд╛рди рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ - рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╣рд╛рдВ рдореИрдВ рдлрд╝реЛрд░реНрдЯреНрд░рд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ f2c'ed C рдХреЛ рджреЗрдЦреВрдВрдЧрд╛ - рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВред)

рдЗрдВрдЯреЗрд▓ MKL 2018.3:

Dotted two 4096x4096 matrices in 2.09 s.
Dotted two vectors of length 524288 in 0.23 ms.
SVD of a 2048x1024 matrix in 1.11 s.
Cholesky decomposition of a 2048x2048 matrix in 0.19 s.
Eigendecomposition of a 2048x2048 matrix in 7.83 s.

рдКрдкрд░ рдкреНрд░рдпреБрдХреНрдд рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░ рдПрдХ рд╢рдмреНрджред рд░реЙрдмрд░реНрдЯ рдиреЗ рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдпрд╛ рдХрд┐ рдЬрдм рддрдХ рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдмреЗрдВрдЪрдорд╛рд░реНрдХ (рдпрд╛ рд╕реБрдиреНрди?) рдЪреЛрд▓реНрд╕реНрдХреА, рдИрд╡реАрдбреА рдФрд░ рдПрд╕рд╡реАрдбреА рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЙрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрдердХ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдиреЗрдЯрд▓рд┐рдм LAPACK рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪреЛрд▓реНрд╕реНрдХреА рдлреИрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд┐рдХ рдЕрд╡рд░реЛрдзрдХ рдЧрд▓рдд рд╣реЛрдЧрд╛ (рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдордХреЗрдПрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдЦрд╝рддрд░рдирд╛рдХ рд▓рд┐рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдЖрдЧреЗ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдордХреЗрдПрд▓ рдХреЗ рдкрд╛рд╕ рдЪреЛрд▓реНрд╕реНрдХреА рдлреИрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди gemm рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕реЗрдм рд╕реЗ рд╕реЗрдм рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред MKLред

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

рдЖрдо рддреМрд░ рдкрд░ рдЬреЛ рднреА LAPACK рдпрд╛ LAPACK-alike рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЙрди рдЬреИрд╕реЗ рдЦрд╛рдорд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрд╢рдиред MKL рдмрд┐рд▓реНрдб рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ LAPACK рдХреЗ рдЯреНрдпреВрди рдХрд┐рдП рдЧрдП рдХрд╛рдВрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ MKL рдХреЗ рдЕрдВрджрд░ рдЗрдВрдЯреЗрд▓ рдХреЗ рдЬрд╣рд╛рдЬ рд╣реИрдВред BLIS рдмрд┐рд▓реНрдб рд╢рд╛рдпрдж рд╕рдВрджрд░реНрдн LAPACK рдпрд╛ рдЗрд╕рдХреЗ рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕ рд▓рд┐рд╣рд╛рдЬ рд╕реЗ рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ: рдпрджрд┐ рдЖрдк рддреЗрдЬ рдПрд╕рд╡реАрдбреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЪреБрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдХрд┐ рдПрдордХреЗрдПрд▓ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдирд╣реАрдВ рд╣реИред (рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ OpenBLAS рдмреАрдЪ рдореЗрдВ рд╣реИ: рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде LAPACK рдХреЗ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╣рд╛рдЬ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ MKL рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред) рд▓реЗрдХрд┐рди рд╣рд╛рдБ рдЕрдЧрд░ рдЖрдк рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ BLIS рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рдПрд╕рд╡реАрдбреА / рдЖрджрд┐ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдЬреАрдИрдПрдордПрдо рджрдХреНрд╖рддрд╛ рд╕реЗред

рдПрдХ рдорд╛рдпрдиреЗ рдореЗрдВ рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ:

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

@njsmith @insertinterestingnamehere @rgommers @charris Isuru рдХреЗ рддреНрд╡рд░рд┐рдд рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо BLIS рдХреА master рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрдкрдиреЗ рдРрдк-рдЖрдзрд╛рд░рд┐рдд Windows рд╕рдорд░реНрдерди рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдФрд░ рдорд░реНрдЬ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдХреГрдкрдпрд╛ рджреЗрдЦреЗрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХрд┐рд╕ рд╣рдж рддрдХ рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╕реБрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

@fgvanzee рдХреНрдпрд╛ рдЖрдк PR рд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдк рдкреАрдЖрд░ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬрд╝рд░реВрд░, рдпрд╣рд╛рдБ рдпрд╣ рд╣реИред

рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рд▓реНрдб рд╕реЗрдЯ рдмрдврд╝рд┐рдпрд╛ рд╣реИ! рдХрдо рд╕реЗ рдХрдо рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ BLIS рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ dll рдмрдирд╛рдиреЗ рдпрд╛ MinGW рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд╛рдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ: pthreads-win32 LGPL рд╣реИред IDK рдХреНрдпрд╛, рдЕрдЧрд░ рдХреБрдЫ рднреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓рд╛рдЗрд╕реЗрдВрд╕ рджреЗрдирд╛ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдореБрджреНрджрд╛ рд╣реИред рдореБрдЭреЗ рдХреБрдЫ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдХрд╛рдиреВрдиреА рдиреАрддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдПрд▓рдЬреАрдкреАрдПрд▓ рдЬреИрд╕реЗ "рдХреЙрдкреАрд▓реЗрдлреНрдЯ" рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ "рдЕрдиреБрдореЗрдп" рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред NumPy / SciPy рдХреЛрдб рдЖрдзрд╛рд░ рдпрд╛ рдкрд╣рд┐рдпреЛрдВ рдореЗрдВ LGPL рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪрд┐рдВрддрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╛ рдирд╣реАрдВред

рд╣рдо рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХреЛрдб рдЖрдзрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдкрд╣рд┐рдпреЛрдВ рдореЗрдВ рдПрдХ LGPL рдШрдЯрдХ рд╢рд┐рдкрд┐рдВрдЧ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдм рд╣рдо рдПрдХ Gfortran dll рдХреА рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреНрд░рдо рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде GPL рд╣реИред Gh-8689 рджреЗрдЦреЗрдВ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдРрд╕реА рдХрдВрдкрдирд┐рдпрд╛рдВ рднреА рдПрдордХреЗрдПрд▓ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреА рд╣реИрдВред

рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрд▓рдЬреАрдкреАрдПрд▓ рдШрдЯрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рд╢рд╛рдпрджред

@jakirkham рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдереНрд░реЗрдб рдкреВрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рдордирд╛рдпрд╛ рд▓рд╛рдЧрдд рдЙрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдСрдкрд░реЗрдВрдб рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧреА рдЬреЛ рдЖрдк рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдХреМрди рд╕рд╛ рдСрдкрд░реЗрд╢рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рд╕рд╣реА рд╣реЛ), рд▓реЗрдХрд┐рди рдЖрдк рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдирддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдмрд╛рд░-рдмрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛, рдЬрд╣рд╛рдВ рдП, рдмреА, рдФрд░ рд╕реА 40x40 рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ / рдмрдирд╛рдиреЗ рдХреЗ рдореЙрдбрд▓ рдХреА рд▓рд╛рдЧрдд рдкреНрд░рдХрдЯ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж 400x400 рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред (рдЯреАрдмреАрдПрдЪ, рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ 40x40 рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧрддрд┐ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред)

рдореБрдЦреНрдп рд░реВрдк рд╕реЗ GEMM рдФрд░ SYRK рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВред GEMV рдХрднреА-рдХрднреА рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдЬреЛ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдПрдХ рдмрдбрд╝реЗ GEMM рдСрдкрд░реЗрд╢рди рдореЗрдВ рд▓реБрдврд╝рдХрд╛ рд╣реБрдЖ рд╣реИред

рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо 1 рдЖрдпрд╛рдо рдирд╣реАрдВ рд╣реИ рдЬреЛ 10 ^ 6 рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд░рдо рдкрд░ рд╣реИред рдЕрдиреНрдп 10 ^ 3 рд╕реЗ 10 ^ 6 рддрдХ рдХрд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдереНрд░реЗрдбрдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдВрдЯрд╛ рд╣реИ рддреЛ рдереНрд░реЗрдбрдкреВрд▓ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ?

рдПрдХ рдЕрд▓рдЧ рдмрд┐рдВрджреБ рдкрд░, рдХреНрдпрд╛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЧрддрд┐рд╢реАрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ? рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдБред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ 2017 рдХреЗ рдЙрддреНрддрд░рд╛рд░реНрдз рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЕрдм рддрдерд╛рдХрдерд┐рдд "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд╛рд░реЛрдВ" рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдЙрдк-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЪреБрдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдк-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде (рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢)ред рд╕рдорд░реНрдерд┐рдд рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг Intel64, amd64, x86_64 рд╣реИрдВред

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

x86_64 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ @jakirkham рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдЖрдкрдХреЛ рдорд┐рд▓рддреА рд╣реИ:

  • рдкреЗрдиреНрд░реА (рдЗрдВред рдиреЗрд╣рд▓реЗрдо рдФрд░ рдЕрдиреНрдп 64-рдмрд┐рдЯ SSSE3 рдЗрдВрдЯреЗрд▓ рдЪрд┐рдк)
  • рд╕реИрдВрдбреА рдмреНрд░рд┐рдЬ (inclред рдЖрдЗрд╡реА рдмреНрд░рд┐рдЬ)
  • Haswell (+ Broadwell, Skylake, Kaby рдЭреАрд▓, рдФрд░ рдХреЙрдлреА рдЭреАрд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рддреАрди рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛)
  • Xeon Phi (рдкрд╣рд▓реА рдФрд░ рджреВрд╕рд░реА рдкреАрдврд╝реА, рд╣рдо рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рддреАрд╕рд░реА рдкреАрдврд╝реА рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)
  • рд╕реНрдХрд╛рдИрд▓реЗрдХ рдПрд╕рдкреА / рдПрдХреНрд╕ / рдбрдмреНрд▓реНрдпреВ (рд╕рдВрднрд╡рддрдГ рддреЛрдк рдЭреАрд▓ рдкрд░ рдЗрд╖реНрдЯрддрдо рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реЛрдЧрд╛)
  • рдмреБрд▓рдбреЛрдЬрд░ / Piledriver / рджрдмрд╛рд╡ рдбрд╛рд▓рдирд╛ / рдЦреБрджрд╛рдИ
  • Ryzen / EPYC

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдПрдХ рдирдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдХрд▓рдХ рдФрд░ / рдпрд╛ рдмрд┐рдиреБрдЯрд┐рд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдорд╢реАрди рдкрд░ред

AFAIK libflame рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЧреБрдард▓реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рднреА BLIS рддрдХ рд╣реИред

@ рдЬрд╛рдХрд┐рд░рдЦрдо рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдереНрд░реЗрдбрдЕрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рдВрдЯ-рдЬреНрд╡рд╛рдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдХрд╛рдВрдЯрд╛-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

AFAIK libflame рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЧреБрдард▓реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рднреА BLIS рддрдХ рд╣реИред

рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд╣реА рд╣реИред рдЬрдмрдХрд┐ рд▓рд┐рдлрд╝реНрд▓рдлрд╝реЗрдо рдореЗрдВ рдХреБрдЫ рдЗрдВрдЯреНрд░реЗрдВрд╕рд┐рдХреНрд╕ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ SSE) рд╣реИрдВ рдЬреЛ рдЧрд┐рдиреЗрд╕ рдШреБрдорд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдард▓реА рд░рдЦрддреЗ рд╣реИрдВ, рдЙрди рдЧреБрдард▓реА рдореЗрдВ рд▓рд┐рдлрд╝реНрд▓реЗрдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЙрд╕ рд╕рдордп рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ рдЬрдм рд╡реЗ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЛрдИ рдЕрдиреНрдп рдЬрдЧрд╣ рдирд╣реАрдВ рдереА рдЙрдиреНрд╣реЗрдВ рдШрд░ рджреЛред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЙрди рдЧреБрдард▓реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдФрд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

@ рдЬрдХрд┐рд░рдЦрдо рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рд▓реМ" рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рд╣рдо рджреЛ рдЙрддреНрдкрд╛рджреЛрдВ: libflame рдФрд░ BLIS рд╣реИред рдЬрдмрдХрд┐ рдХрд╛рдореЗрдЪреНрдЫрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╡рд╕реНрддреБрддрдГ рдкрд┐рдЫрд▓реЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореЗрд░рд╛ рд╕рд╛рд░рд╛ рдзреНрдпрд╛рди рдмреАрдПрд▓рдЖрдИрдПрд╕ рдкрд░ рд░рд╣рд╛ рд╣реИред

рдпрджрд┐ рдЖрдк "рдлреНрд▓реЗрдо" рдХреЛ "BLIS" рд╕реЗ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ "рд╣рд╛рдВ, рдЬреНрдпрд╛рджрд╛рддрд░" рд╣реИред

рдХреИрд╕реЗ рджрд╛рдиреЗрджрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ?

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рд▓реЗрдХрд┐рди BLIS рдореЗрдВ рдХрд░реНрдиреЗрд▓ рд╕рдорд░реНрдерди рдЙрддрдирд╛ рд╡реНрдпрд╛рдкрдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ OpenBLAS рдореЗрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдХреНрд╕рд░ рдЬрдЯрд┐рд▓ рдбреЛрдореЗрди trsm рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЧреБрдард▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ, рдХреБрдЫ рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдЙрдк-рд╡рд┐рдиреНрдпрд╛рд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдк-рд╡рд┐рдиреНрдпрд╛рд╕ cpuid рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреБрдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдЙрдк-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЧреБрдард▓реА "рдкрдВрдЬреАрдХреГрдд" рдорд┐рд▓рддреА рд╣реИред рдХреГрдкрдпрд╛ рдирдЯ рдФрд░ рдмреЛрд▓реНрдЯ рдкрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХреА рджреЗрдЦреЗрдВред

рдХреНрдпрд╛ рдЗрди рдХрд░реНрдиреЗрд▓ рдореМрдЬреВрдж рд╣реИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдпрджрд┐ рдЖрдкрдХреЛ рд░рдирдЯрд╛рдЗрдо рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдк-рд╡рд┐рдиреНрдпрд╛рд╕ (рдпрд╛ auto ) рдХреЗ рдмрдЬрд╛рдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░-рдЯрд╛рдЗрдо рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд╛рд░ (рдЬреИрд╕реЗ intel64 , x86_64 ) рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдк-рд╡рд┐рдиреНрдпрд╛рд╕)ред рдмрд╕ред

рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдереНрд░реЗрдбрдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдВрдЯрд╛ рд╣реИ рддреЛ рдереНрд░реЗрдбрдкреВрд▓ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ?

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдкрд╣рд▓реЗ рдХрд╣рд╛ рд╣реИ, BLIS рдПрдХ рдереНрд░реЗрдб рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдореИрдВ рдбреЗрд╡рд┐рди рдХреЛ рдХрд╛рдВрдЯреЗ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЯрд╛рд▓ рджреЗрддрд╛ рд╣реВрдВ (рдФрд░ рд╡рд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдлреЛрд░реНрдХрд┐рдВрдЧ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА)ред

FYI рдХрд░реЗрдВ, BLIS рдХреЛрдВрдбрд╛ рдкреИрдХреЗрдЬ linux, osx, рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП conda-forge рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЗрд╡ рд╢рд╛рдЦрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдПрдХ рд╡рд┐рдореЛрдЪрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ)ред рд╕рдВрдХреБрд▓ рд╕рдХреНрд╖рдо рдХрд┐рдП рдЧрдП pthreads рдФрд░ x86_64 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рдереЗред

рд╡рд╣ рдПрдХ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЗрд╕реЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рд╕рднреА рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рд╛рде рдЪрд▓реЗрдВрдЧреЗред рдЙрдирдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА GEMM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдХреЛрдб рдЬреЛ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирддрд╛ рд╣реИ - рд╡реЗ рднреАEMEM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рд╡рд╣ GEMM рдХреЛ рдЕрдкрдиреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЧрд▓рддреА рд╕реЗ рдЕрдиреНрдп рдЕрд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓ GEMM рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@njsmith рдореИрдВрдиреЗ рд░реЙрдмрд░реНрдЯ рд╕реЗ рдмрд╛рдд рдХреА рд╣реИ, рдФрд░ рд╡рд╣ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВред (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдкрд░, рдореИрдВрдиреЗ BLIS рдореЗрдВ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЦреЛрдЬ рдХреА, рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдереНрд░реЗрдб рдХреЛ рд╕рдорд╛рдирддрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧреАред рдпрд╣ рддрдп рдХрд░рдирд╛ рдХрд┐ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдПрдХ рд╕рд╛рде рд▓реЛрдЧреЛрдВ рдХреА рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдЧреАред рддреБрдореНрд╣рд╛рд░рд╛ рдорд┐рддреНрд░ред)

@jakirkham Intel, @Jffhammond рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рдВрдкрд░реНрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ OpenMP рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдереНрд░реЗрдб рдкреВрд▓ рдореЙрдбрд▓ рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд╣ рд╣рдореЗрдВ BLIS рдХреЗ рднреАрддрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдереНрд░реЗрдб рдкреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдм, рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ, рдХрд┐ рдиреБрдХреАрд▓реЗ рдЬрд░реВрд░рддреЛрдВ / рдкрд╕рдВрдж рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рдВрдЯрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЖрдПрдБ / рдХрд╛рдВрдЯрд╛ / рдЬреЙрдЗрди-рд╕реНрдЯрд╛рдЗрд▓ pthreads рдПрдкреАрдЖрдИ рдХреЗ рдиреАрдЪреЗ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рддреЛ рдпрд╣ pthreads, OpenMP, рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рднреВрд▓ рдЧрдпрд╛ рд╣реВрдВред рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХрд╛ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рд╕рдорд╛рдирд╛рдВрддрд░рд╡рд╛рдж рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реИ: рдпрд╣ pthreads рдпрд╛ OpenMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ pthread_once() рдкрд░ рд╣рдорд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рдмрд┐рдирд╛ рд╢рд░реНрдд рд░рдирдЯрд╛рдЗрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рд╣реЛрдиреЗ рдХреА рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред)

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

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

рдХрд╛рдлреА рдЙрдЪрд┐рддред рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЦрд╛рдореЛрд╢ BLIS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП --enable-threading=pthreads рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред

рдЬрдм рдкрд╛рдпрдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ / рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдорддрд╛рдкреА рд╕рдорд╛рдирддрд╛ рд╡рд╛рд▓реЗ рдиреНрдпреВрдЯреНрд░рд┐рд╕рд┐рдЬреНрдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реБрдкреА рдореЗрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ?

рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рджреЗрдЦреВрдБрдЧрд╛:

https://github.com/tomMoral/loky/pull/135/files#diff -e49a2eb30dd7db1ee9023b8f7306b9deR111

MKL & OpenMP рдХреЗ рд▓рд┐рдП https://github.com/IntelPython/smp рдореЗрдВ рдЬреИрд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реИрд╕рд╛ рд╣реАред

рдЬрдм рдкрд╛рдпрдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ / рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдорддрд╛рдкреА рд╕рдорд╛рдирддрд╛ рд╡рд╛рд▓реЗ рдиреНрдпреВрдЯреНрд░рд┐рд╕рд┐рдЬреНрдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реБрдкреА рдореЗрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ?

@ogrisel рдорд╣рд╛рди рд╕рд╡рд╛рд▓, рдУрд▓рд┐рд╡рд┐рдпрд░ред рд░рдирдЯрд╛рдЗрдо рдкрд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рдмреЙрдкреНрдЯреАрдорд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ (рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлреАрдб рдХрд░рдиреЗ рдкрд░ gemm рдпрд╛ рдЬреЛ рднреА рд╣реЛ) рдкреНрд░рддрд┐ рдХреЙрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп (рдПрдХ рддрд░рдл рд╕реЗ)ред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЛрдб рдХреЗ рдПрдХ рдорд╛рдореВрд▓реА рд░рд┐рдбрд┐рдЬрд╛рдЗрди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХрд┐рд╕реА рдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ gemm рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП BLIS рдХреЗ рддрдерд╛рдХрдерд┐рдд "рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ" рдЙрдк-рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдкреНрд░рддрд┐-рдХреЙрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рдорд╛рдирд╛рдВрддрд░ рд░рдгрдиреАрддрд┐ рдХреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрдкрд░реЛрдХреНрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ BLIS рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирддрд╛ рдпрд╛ рд▓реЗрд╡рд▓рд┐рдЬреНрдо рдХрд╛ рд╕реНрддрд░ рдХреНрдпрд╛ рд╣реИ (BLF рдкрд╕рдВрдж рдХреЗ рд░реВрдк рдореЗрдВ)ред

рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред рдореИрдВ рдЖрдзреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╣реА рдХрд░ рдЪреБрдХрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдпрд╛ рддреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреАрдердм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдпреЛрдЬрдирд╛ рдХреБрдЫ рдРрд╕реА рд▓рдЧрддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧреА, рдФрд░ / рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЕрдиреНрдп рдЪрд┐рдВрддрд╛ рдпрд╛ рдЕрдиреБрд░реЛрдз рд╣реИред

рдкреБрдирд╢реНрдЪ: рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдШреГрдгрд┐рдд рд▓рд┐рдВрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реАред рдЙрди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдзрд╛рдЧреЗ рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рди рд╣реЛред рддреЛ рдЬреЛ рдХреЛрдИ рдЕрдзрд┐рдХрддрдо 8 рдХреЛрд░ / рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдкреЙрди 2 рдереНрд░реЗрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ gemm рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ 4-рд╡реЗ рд╕рдорд╛рдирддрд╛ рдорд┐рд▓рддреА рд╣реИред рдпрд╛ 3 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдереНрд░реЗрдб рдЬрд╣рд╛рдВ рдЙрдирдореЗрдВ рд╕реЗ рджреЛ gemm рдХреЛ 2-рд╡реЗ рд╕рдорд╛рдирд╛рдВрддрд░рд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд╣рддреЗ рд╣реИрдВ, 4-рд╡реЗ рд╕рдорд╛рдирд╛рдВрддрд░рд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред (рддреБрдореНрд╣реЗрдВ рдирдпрд╛ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред)

рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦрд┐рд▓рд╛рддреА рд╣реИред

рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдХреНрдпрд╛ рдкрд╛рдпрдерди рд╕реЗ ctypes рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ / рд╡реИрд╢реНрд╡рд┐рдХ BLIS рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦрд┐рд▓рд╛рддреА рд╣реИред

рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

@ogrisel рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ BLIS рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ API рд╣реИ рдпрд╛ рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, OpenMP рдореЗрдВ omp_get_num_threads() рдФрд░ omp_set_num_threads() рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреЗ BLIS API рдлрд╝рдВрдХреНрд╢рди getenv() рдФрд░ setenv() рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рддрдереНрдп рдХреА рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд▓рд╛рдХреГрддрд┐ рд╣реИ рдХрд┐ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╢реЗрд▓ рдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдерд╛ (рдЙрджрд╛рд╣рд░рдг bash ) рдФрд░ рдлрд┐рд░ рдПрдХ рдмреАрдПрд▓рдЖрдИрдПрд╕-рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ред рд╕рдордп рдмрд╕ рдЙрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛; рдпрд╣ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо, рд╕рд╣реА рддрд░реАрдХрд╛ рдХрднреА рдирд╣реАрдВ рдерд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкрд╛рдпрдерди рд╕реЗ ctypes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, BLIS рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ?

рдмреАрдПрд▓рдЖрдИрдПрд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдереНрд░реЗрдб рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмрд▓реНрдХрд┐, рд╣рдо pthreads рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рдирддрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдирд╛рдиреЗ / рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рд╛рдВ, BLIS рдХреЗ рдЖрд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдпрд╛ рдХреЙрд▓рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдкрд╛рдпрдерди рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ / рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛ред) рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдХреБрдЫ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЖрд╡реЗрджрди /ред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрд╕ рд╕рдордп рдкреНрд░рддрд┐-рдХреЙрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХрд╕реНрдЯрдо рд╕рдорд╛рдВрддрд░рдХрд░рдг рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рд▓реЗрд╡рд▓ -3 рдСрдкрд░реЗрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реА рдЖрд░рдВрдн рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╣реЛрдЧрд╛ struct рдбреЗрдЯрд╛рдкреНрд░рдХрд╛рд░ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ struct рдХреЗ рд▓рд┐рдП BLIS рдПрдкреАрдЖрдИ рдХреЗ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд "рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ" рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ gemm , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред) рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдирд╛ рджреЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ / рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЧрд╛ред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдкреНрд░рддрд┐-рдХреЙрд▓ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдПрдкреАрдЖрдИ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкрд╛рдпрдерди рд╕реНрддрд░ рдХреЗ рдХреЙрд▓рд░реНрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдиреНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреЗ рдореМрдЬреВрджрд╛ рдореВрд▓реНрдп (рд╕рдорд╛рдирддрд╛-рд╕реНрддрд░) рд╕рдорд╛рдирддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЬрдм рддрдХ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдмрд╛рдж рдореЗрдВ BLAS-3 рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

@charris float16 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рд╕рдордп рдореЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреЗ рдореМрдЬреВрджрд╛ рдореВрд▓реНрдп (рд╕рдорд╛рдирддрд╛-рд╕реНрддрд░) рд╕рдорд╛рдирддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЬрдм рддрдХ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдмрд╛рдж рдореЗрдВ BLAS-3 рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

рдЬрд╛рдирдХрд╛рд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╕реБрдиреНрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдХрд░реАрдм рд╣реИред (рдореИрдВ рд╕рд┐рд░реНрдл рдЗрди-рдкреНрд░реЛрдЧреНрд░реЗрд╕ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЕрдирдЬрд╛рди рд░реЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╣реЛрддреЗ рд╣реИрдВред)

рд╢рд╛рдпрдж рд╣рд░ рдХреЙрд▓ рдкрд░ рд░реАрдЪрд╛рд░реНрдЬ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд░ рдирд┐рд░реНрднрд░ рди рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ getenv рд╕реБрдкрд░ рдлрд╛рд╕реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рднреА рд╣реИ?) рд▓реЗрдХрд┐рди bli_thread_set_num_threads API рдХреЙрд▓ рдареАрдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА BLIS рд╣рд░ рд╕рдордп getenv рдХреЙрд▓ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗ, рдлрд┐рд░ API рдХреЙрд▓ рдХреЛ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рд╕реЗ рдкрд░реЗ рдХреБрдЫ-рдирдВрдЧреЗ-рдмреАрдПрд▓рдПрдПрд╕ рдПрдкреАрдЖрдИ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ BLIS рдХреЛ рдЖрдХрд░реНрд╖рдХ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреНрдп BLAS рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореИрдЯреНрд░рд┐рд╕ рдХреЛ рд╕реНрдЯреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдФрд░ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ BLAS API рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ ред

рд╣рдо рд╣рд╛рд░реНрдб-рдПрдкреАрдЖрдИ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдХреЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо BLIS рдХреЗ JC, IC, JR рдФрд░ IR рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рддрд░реНрдХ рд▓реЗрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП np.matmul рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣) рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп "рдЗрд╕ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдереНрд░реЗрдб" рддрд░реНрдХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдмреИрдХрдПрдВрдб рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рд╣реИ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд┐рд╕реНрдЯрдо рд╕рдкреНрд▓рд╛рдИ рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ 32 рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЗрди рджрд┐рдиреЛрдВ рдХреБрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдорд╛ рд╣реИред рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕рднреА рд╕реВрдЪрдХрд╛рдВрдХ 64 рдмрд┐рдЯреНрд╕ рдереЗ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░реЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред @ рдореИрдереНрдпреВ-рдмреНрд░реЗрдЯ рдХреНрдпрд╛ рд╣рдо рдЕрднреА рднреА 32 рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@charris BLIS рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрдХрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░-рд╕рдордп рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ: 32 рдпрд╛ 64 рдмрд┐рдЯреНрд╕ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЖрдВрддрд░рд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрдХрд╛рд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ BLAS API рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреВрд░реНрдгрд╛рдВрдХ рдЖрдХрд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ: рдореИрдВ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдХрд┐рд╕реА рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╡рд╣ рдЬреЗрдо рдХреЛ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рд╡рд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд┐рд░рд╛рд╢ рдерд╛ рдХрд┐ рд╕реНрдЯреИрдгреНрдбрд░реНрдб рдмреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдЬреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕рд╡рд╛рд░реА рд╣реИред

@njsmith рдореИрдВрдиреЗ рдкрд╣рд▓реЗ fa08e5e (рдпрд╛ рдЙрд╕ рдХрдорд┐рдЯ рдХрд╛ рдХреЛрдИ рд╡рдВрд╢рдЬ) рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд╛рдардХ рдХреЛ рдЙрд╕рдХреА рдкрд╕рдВрдж рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдЕрднреА рдХреЗ рд▓рд┐рдП dev рд╢рд╛рдЦрд╛ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬрд▓реНрдж рд╣реА рдЗрд╕реЗ master рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред (рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреЗрд╕реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд▓рд┐рдВрдХ рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред

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

@charris рд╣рдо рдЙрдирдХреЗ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ / AI рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдХрд╛рд░рдг bfloat16 рдФрд░ / рдпрд╛ float16 рд▓рд┐рдП рд╕рдорд░реНрдерди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо double double рдХреА рдорд╛рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ

@charris https://en.wikipedia.org/wiki/Long_double рдХреЗ рдЕрдиреБрд╕рд╛рд░, long double рдХрд╛ рдорддрд▓рдм рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • 12 рдмреА рдпрд╛ 16 рдмреА рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ x87 рдореЗрдВ 80-рдмрд┐рдЯ рдкреНрд░рдХрд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛
  • MSVC рдХреЗ рд╕рд╛рде рджреЛрд╣рд░реА рд╕рдЯреАрдХрддрд╛
  • рдбрдмрд▓ рдбрдмрд▓ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛
  • рдЪреМрдЧреБрдиреА рд╕рдЯреАрдХ
    рдХреНрдпреЛрдВрдХрд┐ рдЕрд░реНрде рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рди рдХреЗрд╡рд▓ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдкрджрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдмреАрдЖрдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ, рдореБрдЭреЗ рдХреЛрдИ рднреА рдЙрд▓рдЯ рдлреНрд▓реЛрдЯ 80 (рдпрд╛рдиреА x87 рд▓реЙрдиреНрдЧ рдбрдмрд▓) рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ SIMD рд╡рд░реНрдЬрди рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдХреЛрдИ BLIS рдореЗрдВ double double рдХрд╛ SIMD рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдлреНрд▓реЛрдЯ128 рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдлреНрд▓реЛрдЯ64 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдСрд░реНрдбрд░-рдСрдл-рдкрд░рд┐рдорд╛рдг рдзреАрдорд╛ рд╣реИред рдпрд╣ рдлреНрд▓реЛрдЯ128 рдХреЗ рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡реЗрдХрдкреВрд░реНрдг рд╣реЛрдЧрд╛ рдЬреЛ рд╕рднреА FPE рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ SIMD рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИред Libquadmath рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬрдмрдХрд┐ рд╕рд╣реА рд╣реИ, BLIS рдЬреИрд╕реЗ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди BLAS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдФрд░ рдХреНрд╡рд╛рдб рд╕рдЯреАрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдзрдмреНрдмреЗрджрд╛рд░ рд╣реИ, рдбрдмрд▓ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреНрд╡рд╛рдб рдкреНрд░рд┐рд╕рд┐рдЬрди рд▓реЙрдиреНрдЧ рдбрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХ ARM64 рдХреЛ рд╕рдорд░реНрдерди рдмрдврд╝рд╛рдпрд╛ рдерд╛, рдмреЗрд╢рдХ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдЧрд╛ рдФрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

BLAS G2 рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдбрдмрд▓-рдбрдмрд▓ рдФрд░ BLAS рдореЗрдВ "рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп" рд╕рдВрдЧрдгрдирд╛ рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред (рдпрд╣рд╛рдВ рдкреНрд░рддреНрдпрд╛рд╡рд░реНрддрди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдирд┐рдпрддрд╛рддреНрдордХ, рд▓реЗрдХрд┐рди IIUC рдореЗрдВ рдЙрдЪреНрдЪ-рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред)

рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рджреЗрдЦ рдЙрддреНрд╕рд╛рд╣рд┐рдд!

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ @njsmith рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реЗ рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред рдореЗрд░реЗ рд╡рд░реНрдХрд▓реЛрдб рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рд╕рдордп рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реИрдВ, рдФрд░ рдореЗрд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд╛рдо рдХреА рдмрдбрд╝реА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдореИрдВрдиреЗ PyPi рдХреЗ рд▓рд┐рдП Blis рдкреИрдХреЗрдЬрд┐рдВрдЧ рдкрд░, рдФрд░ рд╕рд╛рдЗрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛: https://github.com/explosion/cython-blis

рдореИрдВрдиреЗ рдмреНрд▓рд┐рд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдкрд╛рдпрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдареЛрдХрд░ рдмреНрд▓реЙрдХ рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдерд╛ред рд╕реНрдореГрддрд┐ рд╕реЗ, рдпрд╣ C99 рдореБрджреНрджреЗ рдереЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЬреЛ рд╕рд╛рдЗрдереЙрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝рд╛ рд╣реИ рд╡рд╣ рд░реБрдЪрд┐ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ рд╕рд╛рдЗрдереЙрди рдХреЗ рдлреНрдпреВрдЬреНрдб рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдлреНрд▓реЛрдЯ рдФрд░ рдбрдмрд▓ рдкреНрд░рдХрд╛рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ nogil рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рдЬрд┐рд╕реЗ рдореЗрдореЛрд░реА-рд╡реНрдпреВ рдпрд╛ рд░реЙ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛ рд╕рдХреЗред рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдлрд╝реНрдпреВрдЬрд╝реНрдб рдкреНрд░рдХрд╛рд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ: рд╡реЗ рд╢реВрдиреНрдп рдУрд╡рд░рд╣реЗрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди-рд╕рдордп рд╕рд╢рд░реНрдд рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдмреНрд▓рд┐рд╕ рдкреИрдХреЗрдЬ рдмрдирд╛рдП рд░рдЦрдиреЗ, рдкрд╣рд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ, рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛рдЗрдерди рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдП рд░рдЦрдиреЗ рдЖрджрд┐ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреБрдЫ рднреА рд╣реЛред рд╣рдо рддрдм рдмреНрд▓рд┐рд╕ рдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреНрдп рдмреАрдПрд▓рдПрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред

@honnibal рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдореЗрдВ рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдереНрдпреВред

рдЖрдкрдХреЗ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рджреВрд╕рд░реЛрдВ рдХреЛ BLIS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рджреЗрдЦрдХрд░ рд╣рдореЗрд╢рд╛ рдЦреБрд╢ рд╣реЛрддреЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЬрдм рднреА рдЖрдкрдХреЛ рдЕрдЬрдЧрд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ (рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдореЙрдбреНрдпреВрд▓, рдЖрджрд┐) рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдХрд┐ @isuruf рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╡рд┐рдВрдбреЛрдЬ ABI рдХреЗ рд▓рд┐рдП рдмрдЬрдирд╛ / appveyor рд╕рдорд░реНрдерди рджреЗрдЦреЗрдВред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рдЙрд╕рд╕реЗ рд╕реБрдирд╛ рдерд╛, рдпрд╣ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдо рдпреВрдЯреА рдореЗрдВ рдпрд╣рд╛рдВ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреЛрдИ рд╡рд┐рдХрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдЦреБрдж рд╕реЗ рдирдЬрд░ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддрд╛ред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реБрд░реБ рдиреЗ рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдРрдкрд╡реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рдЕрдк рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддрд┐-рдХреЙрд▓ рдереНрд░реЗрдбрд┐рдВрдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВред (рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИред)

рдмреАрдПрд▓рдЖрдИрдПрд╕ 0.5.2 рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ рдЬреЛ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХреЗ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдмреАрдЯреАрдПрдПрд╕ рдХреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдХрдИ-рдХреЛрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕рд╣рд┐рдд рдбреЗрдЯ-рд╕реЗрдЯ рдФрд░ рд▓реЗрд╡рд▓ -3 рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред , рдЗрдВрдЯреЗрд▓ рд╕реНрдХрд╛рдИрд▓реЗрдХ-рдПрдХреНрд╕, рдЗрдВрдЯреЗрд▓ рд╣реИрд╕рд╡реЗрд▓ рдФрд░ рдПрдПрдордбреА рдПрдкрд╛рдЗрдХред

рддреЛ рдЕрдЧрд░ рд╕реБрдиреНрди рд╕рдореБрджрд╛рдп рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдмреАрдПрд▓рдЖрдИрдПрд╕ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рдмреАрдПрд▓рдПрдПрд╕ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреИрд╕реЗ рдвреЗрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ!

рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк, рдзрдиреНрдпрд╡рд╛рдж @fgvanzeeред

рдореБрдЭреЗ рдПрдкрд┐рдХ рдХреЛ рджреЗрдЦрдирд╛ рдерд╛ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╝реЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдмреНрд░рд╛рдВрдб рдирд╛рдо рд╣реИ (рд╕рдВрднрд╡рддрдГ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЬрд╝реЗрди + рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ред рд╢рд╛рдпрдж рдЬрд╝реЗрди рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ? рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдХреЗ рд▓рд┐рдП Ryzen / Threadripper рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдмреНрд░рд╛рдВрдб рд╣реИрдВ, рд╡реЗ рдЬрд╝реЗрди рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдПрдкрд┐рдХ рдирд╣реАрдВред

рдПрдкрд┐рдХ рдПрдПрдордбреА рд╕рд░реНрд╡рд░ рд▓рд╛рдЗрди рдХрд╛ рдирд╛рдо рд╣реИред рдпрд╣ рдЕрддреАрдд рдХреЗ AMD Opteron рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХреЗ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд▓реЗрдмрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП BLIS рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреЛрдЦрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рд╡реЗрдХреНрдЯрд░ ISA (рдЬреИрд╕реЗ AVX2), CPU рдХреЛрд░ рдорд╛рдЗрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдЬреИрд╕реЗ рдЖрдЗрд╕ рд▓реЗрдХ) рдФрд░ SOC / рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди (рдЬреИрд╕реЗ рдЗрдВрдЯреЗрд▓ рдЗрдВрдЯреЗрд▓ рдкреНрд▓реЗрдЯрд┐рдирдо рдкреНрд░реЛрд╕реЗрд╕рд░) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ )ред BLIS рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдЬреИрд╕реЗ Dunnington) рдорд╛рдЗрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛрдб рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИред

@fgvanzee рдЖрдк рдЬреАрд╕реАрд╕реА рдорд╛рд░реНрдЪ / mtune / mcpu рдирд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

@rgommers BLIS рдХреЗ рднреАрддрд░ рдЙрдкрд╕рдВрд╣рд┐рддрд╛ рдЬреЛ Ryzen рдФрд░ Epyc рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА zen , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреЛрдиреЛрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдмрд╛рдд рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ Ryzen / Threadripper рдпрд╛ Epyc рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдмреНрд░рд╛рдВрдб рд╣реИрдВ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реБрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рдореИрдВ рдпрд╣ рдХрд╣реВрдВрдЧрд╛: рдпрджрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ AMD Zen рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЙрдЪреНрдЪрддрдо-рдЕрдВрдд рд╡рд╛рд▓рд╛ рдПрдкрд┐рдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐: (a) рдЗрд╕реЗ Ryzen рдХреЗ рд╕рдорд╛рди рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ; (b) рдпрд╣ рдореБрдЭреЗ рдЕрдзрд┐рдХрддрдо 64 рднреМрддрд┐рдХ рдХреЛрд░ рджреЗрддрд╛ рд╣реИ (рдФрд░, рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрди рдХреЛрд░ рдХреЛ рдХреБрдЫ рдЙрдкрдиреНрдпрд╛рд╕, NUMA- рдЬреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ); рдЬреЛ (рд╕реА) рдмреАрдПрд▓рдЖрдИрдПрд╕ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЕрдзрд┐рдХрддрдо рддрдирд╛рд╡ рдбрд╛рд▓рддрд╛ рд╣реИред рдФрд░ рдпрд╣реА рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдордиреЗ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рд╣реИред

рдЕрдм, рд╢реБрдХреНрд░ рд╣реИ, рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХреЛрдИ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдЬрд╝реЗрди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред :) рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╣рд▓реА рдЬрдЧрд╣ рдкрд░ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп рдХрд┐рд╕реА рднреА Ryzen / Threadripper рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ / рдЬрдм рдореИрдВ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдЬреЗрдл рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдирд╛рдордХрд░рдг рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рд╣рдо рдЕрдкрдиреЗ рд╕рдмрдХреЛрдиреНрдлрд┐рдЧреБрд░реЗрд╢рди рдФрд░ рдХрд░реНрдиреЗрд▓ рд╕реЗрдЯ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рдФрд░ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо Haswell, Broadwell, Skylake, Kaby Lake, рдФрд░ Coffee Lake рдкрд░ рд╣рдорд╛рд░реЗ haswell рдЙрдк-рд╕рдВрдЪрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рднреА рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рд╡реЗрдХреНрдЯрд░ рдЖрдИрдПрд╕рдП рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдмреАрдПрд▓рдЖрдИрдПрд╕ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реИ рдЬрд┐рд╕рд╕реЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЪрд┐рдВрддрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк ./configure auto , рддреЛ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдм-рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдФрд░ рдХрд░реНрдиреЗрд▓ рд╕реЗрдЯ рдорд┐рд▓реЗрдЧрд╛, рдЪрд╛рд╣реЗ рдЙрдиреНрд╣реЗрдВ zen рдпрд╛ haswell рдпрд╛ рдЬреЛ рднреА рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдПред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрднреА рднреА рдФрд░ рдЕрдзрд┐рдХ рд╣рд╛рдереЛрдВ-рд╣рд╛рде рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЖрдкрдХреА рдереНрд░реЗрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрд╣реА рд╡рд╣ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдЬреЗрдУрд╕реА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ рдХрд┐ SoC / рдордВрдЪ рдПрдХреАрдХрд░рдгред

@Jffhammond рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рдЙрди рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдБ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрд╡реНрдпрд╡рд╕реНрдерд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдФрд░ рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рд╕рдВрднрд╡рдд: рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдмрдХреЛрдиреНрдлрд┐рдЧреБрд░реЗрд╢рди рдФрд░ рдХрд░реНрдиреЗрд▓ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдирд╛рдордХрд░рдг рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд╕реВрдХреНрд╖реНрдордЬреАрд╡рд╡рд┐рдЬреНрдЮрд╛рдиреА рд╕рдВрд╢реЛрдзрди рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╛рдо (рдпрд╛ config рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ)ред рдЕрдм, рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, BLIS рдХреЛ ./configure haswell рдорд╛рдзреНрдпрдо рд╕реЗ, рдЙрдкрд╕рдВрдХреНрд░рдордг рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдкрд╣рдЪрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрд░рд╛рдЬреВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЯрд┐рдк рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди ./configure auto рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред (рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╡реНрдпрд╛рдкрдХ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВред рдЕрдЧрд░ рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рдВрдЧ рд╣реИ рддреЛ рдореИрдВ рд╣рдореЗрд╢рд╛ рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред)

рд╣рд╛рдВ, рдирд╛рдордХрд░рдг рд╣рдореЗрд╢рд╛ рдЬрдЯрд┐рд▓ рд╣реИ :) рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @fgvanzee рдФрд░ @Jffhammond

# 13132 рдФрд░ # 13158 рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ

рдЪрд░реНрдЪрд╛ рдереЛрдбрд╝реА рджреВрд░ рд╣реБрдИ; рдмрдЪреЗ рд╣реБрдП рдореБрджреНрджреЗ рдХреНрдпрд╛ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрдкреАрд░рд┐рдпрд░ рдореЗрдВ BLIS рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

Naively, рдореИрдВрдиреЗ рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ (cf https://github.com/numpy/numpy/issues/14180#issuecomment-525292558) рд╕реЗ BLIS рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП, рд▓рд┐рдирдХреНрд╕ рдкрд░, рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЧрдП (рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореИрдВред рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛)ред

рдПрдХ рд╣реА env рдореЗрдВ рдЯреЗрд╕реНрдЯ рд╕реНрдХреЗрдкреА рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ рдФрд░ scipy.linalg (cf https://github.com/scipy/scipy/issues/10744) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рд╣реИред рдЙрд╕ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рд╕реЗ BLIS, LAPACK рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ ReferenceLAPACK (netlib) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ BLAS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ BLIS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ libflame ред

рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рдкрд░ рдмреАрдПрд▓рдЖрдИрдПрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВрдВ рдХрд┐ рдпрд╣ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИ (рдУрдкрдирдмреНрд▓реЙрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╡рд┐рдкрд░реАрдд)?

рд╢рд╛рдпрдж рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдбрд╛-рдлреЛрд░реНрдЬ cond рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ

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

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

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

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

dmvianna picture dmvianna  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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