рдбреЗрдЯрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GPGPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рднрд╛рдЧ I)

рд╣реИрд▓реЛ, рдкреНрд░рд┐рдп рд╣рд╛рдмрд░рд╛ рд╕рдореБрджрд╛рдпред

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

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


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

рдбреЗрдЯрд╛ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╣рдлрд╝рдореИрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


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

рд╣рдореЗрдВ рдПрдХ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдорд┐рд▓рд╛, рдЬрд╣рд╛рдВ рдЬрдбрд╝ рдЕрдВрддрд┐рдо рд╢реАрд░реНрд╖ рд╣реИред
рдЪрд░рдг 3:
рдкрд░рд┐рдгрд╛рдореА рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдмрд┐рдЯ рдХреНрд░рдореЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рд╣рдо рдЯреНрд░реА рдиреЛрдбреНрд╕ рдХреЛ рдКрдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рджрд╛рдПрдВ рдиреЛрдб рдХреЗ рд▓рд┐рдП 1 рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдПрдВ рдПрдХ рдХреЗ рд▓рд┐рдП 0ред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд░реНрдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
рдП - 0, рдмреА - 10, рд╕реА - 11,
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдВрдкреАрдбрд╝рди рд╕реЗ рдкрд╣рд▓реЗ, ASCII рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд░реНрдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рдереЗ:
a - 01100001, b - 01100010, c - 01100011
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдо рдбреЗрдЯрд╛ рд╕реЗ рдмрджрд▓реЗрдВред
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреЗрдбрд╝ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдкреЗрдбрд╝ рд╕реЗ рдЬрдбрд╝ рд╕реЗ рдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдЧреБрдЬрд╝рд░рддреЗ рд╣реБрдП рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИред

GPGPU рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рдердо


рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ (рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЪрд░рдг 1.2) рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (рдЪрд░рдг 3) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЪрд░рдг 1.3 рдХреЛ GPGPU рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдлрд╝рдореИрди рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдЪрд░рдг рдорд╛рдирдХ рд╣реИрдВ:
  1. рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛;
  2. рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЖрджреЗрд╢ рджреЗрдирд╛;

рдлрд┐рд░ рдЖрдкрдХреЛ рд╣рдлрд╝рдореИрди рдкреЗрдбрд╝ (рдЪрд░рдг 2) рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдлрдореИрди рдкреЗрдбрд╝ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
  1. рдЪрд░рд┐рддреНрд░ рдХреЛрдб рдХреА рдПрдХ рд╕рд░рдгреА;
  2. рд╡рд░реНрдг рдХреЛрдб рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреАред

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

рдкрд░рд┐рдгрд╛рдо


C # рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рджрдХреНрд╖рддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдг CPU, CPU (Async) - рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ CPU (рд╕рд┐рдВрдХ) - рд╕реАрд░рд┐рдпрд▓, рдФрд░ GPGPU (OpenCL рдФрд░ CUDA) рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦреЗ рдЧрдП рдереЗред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЧрддрд┐ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛: рдПрдХ 200 рдПрдордмреА (210 596 352 рдмрд╛рдЗрдЯреНрд╕) рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рджреВрд╕рд░рд╛ 603 рдПрдордмреА (633 128 511 рдмрд╛рдЗрдЯреНрд╕)ред рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, C # рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реНрдЯреЙрдкрд╡реЙрдЪ () рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдордп рдорд╛рдк рдХреА рд╕рдЯреАрдХрддрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдФрд░ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ 1/36902109016524975 = 3.0e-16 рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рдк рджрд╕ рдмрд╛рд░ рдХрд┐рдП рдЧрдП рдереЗред рдЕрдВрдЬреАрд░ рдореЗрдВред 1-4 рдорд╛рдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдФрд╕рдд рд╕рдордп рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░реЗрдЦрд╛рдВрдХрди рд╣реИрдВред

200 рдПрдордмреА рдлрд╝рд╛рдЗрд▓ (рдХреЛрдИ рд▓реЗрдЦрди рдирд╣реАрдВ) рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдФрд╕рдд рд░рди рд╕рдордп
рдЪрд┐рддреНрд░ 1
рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, OpenCL рдФрд░ CUDA CPU (рд╕рд┐рдВрдХ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд╛рдврд╝реЗ рдЖрда рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ, рдФрд░ CPU (Async) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдврд╛рдИ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред

200 рдПрдордмреА рдлрд╝рд╛рдЗрд▓ (рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде) рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдФрд╕рдд рд░рди рд╕рдордп
рдЪрд┐рддреНрд░ 2
рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдУрдкрдирд╕реАрдПрд▓ рдФрд░ рд╕реАрдпреВрдбреАрдПрдП рд╕реАрдкреАрдпреВ (рд╕рд┐рдВрдХ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд╛рдврд╝реЗ рдЪрд╛рд░ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ рдФрд░ рд╕реАрдкреАрдпреВ (рдПрд╕рд┐рдВрдХреНрд╕) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреЗрдврд╝ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред

603 рдПрдордмреА рдЖрдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдФрд╕рдд рд░рди рд╕рдордп (рд▓реЗрдЦрди рдХреЗ рдмрд┐рдирд╛)
рдЪрд┐рддреНрд░ 3
рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, OpenCL рдФрд░ CUDA CPU (рд╕рд┐рдВрдХ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрда рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ, рдФрд░ CPU (Async) рд╕реЗ рдврд╛рдИ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред

рдЖрдХрд╛рд░ рдореЗрдВ 603 рдПрдордмреА рдХреА рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдФрд╕рдд рд░рди рд╕рдордп (рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде)
рдЪрд┐рддреНрд░ 4
рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдУрдкрдирд╕реАрдПрд▓ рдФрд░ рд╕реАрдпреВрдбреАрдПрдП рд╕реАрдкреАрдпреВ (рд╕рд┐рдВрдХ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЪрд╛рд░ рд╕реЗ рддреАрди рдЧреБрдирд╛ рддреЗрдЬ рд╣реИрдВ, рдФрд░ рд╕реАрдкреАрдпреВ (рдПрд╕рд┐рдВрдХреНрд╕) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕реЗ рддреАрди рдЧреБрдирд╛ рддреЗрдЬ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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


All Articles