рд╡рд┐рд╖рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ oneAPI рдЯреВрд▓рдХрд┐рдЯред рдЗрдВрдЯреЗрд▓ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдиреЗ рдЖрдкрдХреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХрд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛



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

рдЫрд╡рд┐ рдкреНрд░рд╢реНрди рд╕реЛрд░реЗрдХреНрд╕ 16
рдУрдкрдирд╕реАрдПрд▓ рд╕реЗ рд╡рдирдПрдкреАрдЖрдИ рдореЗрдВ рдХрд┐рддрдирд╛ рд╢реНрд░рдорд╕рд╛рдзреНрдп рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬрд╡рд╛рдм рд╣реИред DPC ++ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рджреЛ рдореБрдЦреНрдп рдЪрд░рдг рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЖрдкрдХреА рд╡рд┐рд╖рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ (рдУрдкрдирд╕реАрдПрд▓, рд╡рд▓реНрдХрди рдЧрдгрдирд╛) рд╕реЗ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реИ, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдПрдкреАрдЖрдИ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реЗрдб рд╕реНрдЯрд╛рд░реНрдЯ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд░ рдХрдард┐рдирд╛рдИ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрдЪ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд╣реИред
рджреВрд╕рд░реЗ, рдпрд╣ рдЖрдкрдХреА рдореЗрдЬрдмрд╛рди рднрд╛рд╖рд╛ рд╕реЗ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдкреВрд░рд╛ рдЬреАрд╡рди рд╢реБрджреНрдз C рд╕реЗ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ C рд╕реЗ C ++ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдереНрд░реЗрд╢реЛрд▓реНрдб рджрд╣рд▓реАрдЬ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИред

рдХреНрдпреЛрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ?

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, DPC ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдмрд╣реБрдд рдЬрд▓реНрджреА рднреВрд▓ рдЬрд╛рдПрдВрдЧреЗ, рдПрдХ рджреБрдГрд╕реНрд╡рдкреНрди рдХреА рддрд░рд╣, рдЗрди рд╕рднреА рд╕реНрдкрд╖реНрдЯ рдХреЙрд▓реЛрдВ рдХреЛ clXXXYYY, рдФрд░ рдЫрдареЗ рддрд░реНрдХ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдЖрдк рд░рд┐рдЯрд░реНрди рдХреЛрдб рднреВрд▓ рдЧрдП рд╣реИрдВред рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд░реИрдкрд░ рд░реВрдЯреАрди рдХреЛ рдмрджрддрд░ рдирд╣реАрдВ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдорд╛рдирдХ рдУрдкрдирд╕реАрдПрд▓ рдПрдкреАрдЖрдИ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдкрд░ рдорд╛рдирдХ рд░реИрдкрд░ рдПрдкреАрдЖрдИ (рдореИрдВрдиреЗ рдЙрди рдмрд╛рдЗрдХ рдХреЛ рднреА рджреЗрдЦрд╛)ред DPC ++ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдмрд╕ рдорд╛рдирдХ SYCL рдЗрдВрдЯреЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдЬреЛ рдЬрд▓реНрдж рд╣реА рдорд╛рдирдХ SYCL рднреА рдмрди рд╕рдХрддрд╛ рд╣реИ)ред

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

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

auto kern = [A, B, C](cl::sycl::id<1> wiID) { C[wiID] = A[wiID] + B[wiID]; //   A, B  C?  ! }; 

OpenCL рдкрд░ рдПрдХ рд╣реА рдмрд╛рдд:

 _kernel void vector_add(__global int *A, __global int *B, __global int *C) { int i = get_global_id(0); C[i] = A[i] + B[i]; } 

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

рдФрд░ рд╕рднреА рд▓рд╛рдн рдЗрд╕ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрддреНрддрд░реЛрдВ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдпрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ OneAPI рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдЫрд╡рд┐ рдкреНрд░рд╢реНрди рдЬрд╕реНрдЯрд░
рдХреНрдпрд╛ OpenVINO рдФрд░ OneAPI рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдВрдЧреЗ?

рдЬрд╡рд╛рдм рд╣реИред OpenVINO рд╡рд┐рддрд░рдг рдЕрдм OneAPI рд╡рд┐рддрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕реАрдЦрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдХрдард┐рди рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рд╡рд┐рд╖рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рдмрд╣реБрдд рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рд╕рднреА рд╡рдирдПрдкреАрдЖрдИ рдШрдЯрдХ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рднреА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдВрдЧреЗ: рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рддреНрд╡рд░рдХ рдФрд░ рдирд░реНрд╡рд╛рдирд╛ рдФрд░ рдПрдлрдкреАрдЬреАрдП рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖ рддреНрд╡рд░рдХ рджреЛрдиреЛрдВред рдФрд░ рдпрд╣ рд╕рдм рдЖрдкрдХреЗ рд╕реА ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рднрд╛рд╖рд╛ рдкреНрд░рддрд┐рдорд╛рди рдФрд░ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЫреЛрдбрд╝реЗ рдмрд┐рдирд╛ред

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

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

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

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

рдкрд╛рдЗрдерди рдФрд░ рдЙрд╕рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП ... рдореБрдЭреЗ рддреБрд░рдВрдд рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реВрдВ: рд╡реЗ рдзреАрдореА рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЧрд┐рд░рдиреЗ рд╕реЗ рджреЛ рдШрдВрдЯреЗ рдкрд╣рд▓реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдкрд╛рдпрдерди рдХреЗ рддрд╣рдд рдПрдХ рд╣реА рддрд░рд╣ рдХреЗ рдЕрдкрд░рд╛рдз рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рд╣реИред рд╡реИрд╕реЗ, OneAPI рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Python рдХреЗ рд▓рд┐рдП Intel рд╡рд┐рддрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

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

рдЫрд╡рд┐ рдореЗрд▓ рд╕реЗ рд╕рд╡рд╛рд▓
рдУрдкрдирд╕реАрдПрд▓ рдмрдирд╛рдо рдкреНрд░рджрд░реНрд╢рдиред рд▓рдХреНрдЬрд░реА рдкрд░ рдХрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЕрд░реНрдерд╛рдд рдУрд╡рд░рд╣реЗрдб рд▓рд╛рдЧрддред рдХреНрдпрд╛ рдХреЛрдИ рдорд╛рдк рд╣реИрдВ?

рдЬрд╡рд╛рдм рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЖрдк рд╕рдВрдХрд▓рдХ, рдХрд╛рд░реНрдп рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдПрдХреАрдХреГрдд рдХрд╛рд░реНрдпреЛрдВ (SGEMM, DGEMM) рдХреЛ рдорд╛рдкрд╛ (рдПрдХреАрдХреГрдд рд╕реНрдХрд╛рдИрд▓реЗрдХ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕), рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЕрдм рддрдХ рдХреБрдЫ рдЧрд┐рд░рд╛рд╡рдЯ (рдкреНрд░рддрд┐рд╢рдд рдХреЗ рднреАрддрд░) рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЕрдм рддрдХ рдмреАрдЯрд╛ рд╣реИред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдбреАрдкреАрд╕реА ++ рдХреА рдирдХрд╛рд░рд╛рддреНрдордХ рд▓рд╛рдЧрдд рд╣реЛрдЧреАред рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг SYCL рдПрдХреНрд╕реЗрд╕рд░реНрд╕ рд╣реИ, рдЬреЛ рд╕рдВрдХрд▓рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдШрдЯрдирд╛рдУрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

 deviceQueue.submit([&](cl::sycl::handler &cgh) { auto A = bufferA.template get_access<sycl_read>(cgh); auto B = bufferB.template get_access<sycl_read>(cgh); auto C = bufferC.template get_access<sycl_write>(cgh); .... deviceQueue.submit([&](cl::sycl::handler &cgh) { auto A = bufferA.template get_access<sycl_read>(cgh); auto B = bufferB.template get_access<sycl_read>(cgh); auto D = bufferD.template get_access<sycl_write>(cgh); 

рдлрд┐рд░ рдХрдВрдкрд╛рдЗрд▓рд░ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдкреИрдХреЗрдЬ рдХреЗрд╡рд▓ рдП рдФрд░ рдмреА рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рдмрдлрд╝рд░реНрд╕ рд╕реА рдФрд░ рдбреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрдЦрддрд╛ рд╣реИ рдпрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╡реИрд╢реНрд╡рд┐рдХ рдЖрдХрд╛рд░ рд╣реИрдВред

рдмреЗрд╢рдХ, рдПрдХ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд рдУрдкрдирд╕реАрдПрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕реЗ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде рдмрд┐рддрд╛рдП рдЧрдП рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рдордп рддреБрд▓рдиреАрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЫрд╡рд┐ рдореЗрд▓ рд╕реЗ рд╕рд╡рд╛рд▓
рдХреНрдпрд╛ DPC ++ рдХреЗ рд▓рд┐рдП OpenCL рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рднреА рддрд░реАрдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ? рдЙрдирдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдирдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рд╣реИ?

рдЬрд╡рд╛рдм рд╣реИред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХрд░реНрдиреЗрд▓ рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реВрдХреНрд╖реНрдо рдореИрдиреБрдЕрд▓ рдЕрдиреБрдХреВрд▓рди рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рдЙрд╕реА рддрд░рд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ C ++ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдЕрднреНрдпрд╛рд╕ рдорд╛рдирддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рднрд▓реЗ рд╣реА рдпрд╣ рд╕рд╛рдорд░рд┐рдХ рд▓рд╛рдн рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рдж рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдореЗрдВ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдХрд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, рдУрдкрдирд╕реАрдПрд▓ рдЕрдм рдЕрд╕реЗрдВрдмрд▓рд░ рднреА рд╣реИред

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

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

рджреВрд╕рд░реА рдУрд░, рдбреАрдкреАрд╕реА ++ рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рдЕрд╡рд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕ рддрд░рд╣:

  for (t = 0; t < numTiles; t++) { const int tiledRow = TS * t + row; const int tiledCol = TS * t + col; Asub[col][row] = A[globalRow * AY + tiledCol]; Bsub[col][row] = B[tiledRow * BY + globalCol]; // Synchronise to make sure the tile is loaded barrier(CLK_LOCAL_MEM_FENCE); // .... etc .... 

рдЖрдк рд╕рдВрднрд╡рддрдГ рд╕рдорд╛рдВрддрд░_for_work_group рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рднреАрддрд░ group.parallel_for_work_item

 cgh.parallel_for_work_group<class mxm_kernel>( cl::sycl::range<2>{BIG_AX / TS, BIG_BY / TS}, cl::sycl::range<2>{TS, TS}, [=](cl::sycl::group<2> group) { // .... etc .... for (int t = 0; t < numTiles; t++) { group.parallel_for_work_item([&](cl::sycl::h_item<2> it) { // .... etc .... Asub[col][row] = A[globalRow][tiledCol]; Bsub[col][row] = B[tiledRow][globalCol]; }); //      ,    

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

рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рдмрдЪреЗрдЧрд╛, рдХреБрдЫ рдЫреЛрдбрд╝реЗрдЧрд╛ред рдореИрдВ рдПрдХ рдирдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ "рдбреАрдкреАрд╕реА ++ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди" рдХреЗ рдЙрджреНрднрд╡ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдордп рдмреАрдд рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддрдХрдиреАрдХ рдХреЗрд╡рд▓ рдмрд╛рдж рдореЗрдВ рдФрд░ рд░рдХреНрдд рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреА рд╣реИ

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

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

рдХрд╛рд╢, рдпрд╣ рд╕рдм рдмреЗрд╣рдж рдЕрдХреБрд╢рд▓ рд╣реЛ, рдФрд░ рдореБрдЭреЗ рдпреЗ рд╕рдм рддрд░рдХреАрдмреЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдкреНрд░рддреНрдпрдХреНрд╖ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдбреАрдкреАрд╕реА ++ рдореЗрдВ рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИред рдЕрдВрдд рдореЗрдВ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрднреА рднреА рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ: рд╣реЛрд╕реНрдЯ рдХреЛрдб рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛрдб, рдФрд░ рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдореВрд╣ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдирддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдм рдХреБрдЫ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ DPC ++ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: device.get_info <sycl :: info :: device :: max_work_group_size> () рдФрд░ рдлрд┐рд░ рддрдп рдХрд░реЗрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЬреАрдирд╛ рд╣реИред

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

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

рдЫрд╡рд┐ рдореЗрд▓ рд╕реЗ рд╕рд╡рд╛рд▓
DPC ++ SYCL рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмреИрдХ рдПрдВрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдУрдкрдирд╕реАрдПрд▓ рд╕реЗ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╖рдо рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рдг рддрдВрддреНрд░ OpenCL рдХреЗ рд╕рдорд╛рди рд╣реИ?

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

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

рдЫрд╡рд┐ рдореЗрд▓ рд╕реЗ рд╕рд╡рд╛рд▓
рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдЬреА рд╣рд╛рдВ, рд╣рдо CUDA рдХреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ CUDA рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ GPU рдкрд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред OneAPI рдореЗрдВ рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, IPP - oneAPI / OpenCL рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдЕрднрд┐рд▓реЗрдЦреАрдп рдЙрдкрдпреЛрдЧреА рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдХреБрдЫ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ CUDA рд╕реЗ рд╡рдирдПрдкреАрдЖрдИ рдореЗрдВ рдХреИрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдЬрд╡рд╛рдм рд╣реИред CUDA рд╕реЗ рдПрдХрд▓ рдЦреБрд▓реЗ рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, CUDA рдХреЗ рдкрд╛рд╕ рдЕрдм рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдЦрд╛рдореА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдб рдФрд░ рддреНрд╡рд░рдХред

рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реАрдкреАрдпреВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдЗрд╕ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддреА рд╣реИред рдЬрд┐рд╕рд╕реЗ OneAPI рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореЗрдВ рдЬрд╛рджреВ рдЗрдВрдЯреЗрд▓ рдХреА рд╕рдлрд▓рддрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдореЗрдВ рдХрд┐ рдЗрдВрдЯреЗрд▓ рд╕рднреА рдХреЗ рд▓рд┐рдП рдбреАрдкреАрд╕реА ++ рдХрд╛ рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рддрд╛ рд╣реИред рд╣рдо SYCL рдорд╛рдирдХ рдХреЗ рднреА рдорд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣ рдХреНрд░реЛрдиреЛрд╕ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рд╕рднреА рдЗрдВрдЯреЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЦреНрд░реЛрдиреЛрд╕ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рднреА рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рд╡рд╣рд╛рдВ рд╕рднреА рдкреНрд░рдореБрдЦ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИрдВ)ред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ (рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдФрд░ рд╕рдореБрджрд╛рдп рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ), рдФрд░ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд░рд┐рдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ред

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдИрдкреАрдкреА рдХреЛ рдирдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ IPP рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди DPC ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╣реИ, рдФрд░ рд╕рдордЭрджрд╛рд░ рд▓реЛрдЧ рд╡рд╣рд╛рдВ рдмреИрдареЗ рд╣реИрдВред

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

рдЫрд╡рд┐ рдореЗрд▓ рд╕реЗ рд╕рд╡рд╛рд▓
рдпрджрд┐ рд╣рдо рдиреЗрд░рд╡рд╛рдирд╛ рдФрд░ FPGA рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдЕрдиреБрдорд╛рди рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ - рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рджрдХреНрд╖рддрд╛ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИрдВ?

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

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рд╡рд╛рд▓ рдЦреБрдж рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдерд╛, "рдЬреЛ рд╣рд╛рдереА рдпрд╛ рд╡реНрд╣реЗрд▓ рд╕реЗ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╣реИ"ред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рд╣реИред рдЕрд╕рд▓реА рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЧрд╛рдбрд╝реА рдореЗрдВ рд╣рд╛рдереА рдФрд░ рд╡реНрд╣реЗрд▓ рджреЛрдиреЛрдВ рдХрд╛ рджреЛрд╣рди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рддрд░рд┐рдд, рдХрд╣рддреЗ рд╣реИрдВ, рдПрдХ рд╣рд╛рдереА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрдореАрди рд╕реЗ рдЦреАрдВрдЪрдирд╛, рдФрд░ рдПрдХ рд╡реНрд╣реЗрд▓ рд╕рдореБрджреНрд░ рдХреЗ рджреНрд╡рд╛рд░рд╛ред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рджрдХреНрд╖рддрд╛ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореЗрд░реЗ рдХрд╛рд░реНрдп% рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рд╣реИ - рдЗрд╕ рднрд╛рдЧ рдХреЛ FPGA рдкрд░ рд░рдЦреЗрдВ, рдЗрд╕ рдПрдХ рдХреЛ рдирд░реНрд╡рд╛рдирд╛ рдкрд░ рдЫреЛрдбрд╝ рджреЗрдВ рдпрд╛ рдЗрд╕ рднрд╛рдЧ рдХреЛ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ, рдФрд░ GPU рдХреЗ рд▓рд┐рдП рдЗрд╕ рднрд╛рдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ?"

рдФрд░ OneAPI рдХреЗ рд╕рд╛рде рдкреВрд░реА рдХрд╣рд╛рдиреА - рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, "рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпреЛрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕реЗ рдЕрдм рдЬрд▓реНрджреА рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ"ред

рдЕрднреА рддрдХ рдирд╣реАрдВ, рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рд╣реЛрдЧрд╛ред



рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╕реЗ рдЖрдлреНрдЯрд░рд╡рд░реНрдб

рдЖрдк рд╕рднреА рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд╣реИ рдХрд┐ рдореИрдВ рдЧрд▓рдд рдерд╛, рдЧрд▓рдд рдерд╛ рдФрд░ рдЧрд▓рддрд┐рдпрд╛рдБ рдХреАрдВред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдХреЛрдИ рди рдХреЛрдИ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд┐рд╖рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдбреАрдкреАрд╕реА ++ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рд░реБрдЪрд┐ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореИрдВ рд╕рднреА рд╕рд╛рдЗрдЯ sycl.tech рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ , рдЬрд╣рд╛рдВ рд╡рд┐рд╢реНрд╡-рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ (рдЕрдВрдЧреНрд░реЗрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рд╕рд╣рд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЯрди рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ

рд╕рднреА рдХреЛ рдЕрдЪреНрдЫрд╛!

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

Source: https://habr.com/ru/post/hi479486/


All Articles