GPU рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ - рдХреНрдпреЛрдВ, рдХрдм, рдФрд░ рдХреИрд╕реЗред рдкреНрд▓рд╕ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг

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



рд▓реЗрдЦ HighLoad ++ рдореЗрдВ рдореЗрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ ред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ NVIDIA рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рдЙрддреНрдкрд╛рдж рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдореЗрдВ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

GPU рдкрд░ рдХреНрдпреЛрдВ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ?


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

рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреЗ рд╕рд╛рде рдЗрди рд╕рдорд╛рди рдлреНрд▓реЙрдк рдХреА рд╡реГрджреНрдзрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред


(рдбреЗрдЯрд╛ рдХреЛ рдЦреБрд▓реЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, 2019-20 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди GPU рдЕрднреА рднреА рдЬреАрддрддреЗ рд╣реИрдВ)

рдЦреИрд░, рдпрд╣ рдЖрдХрд░реНрд╖рдХ рд╣реИ, рд╣реИ рдирд╛? рд╣рдо CPU рд╕реЗ рд╕рднреА рдЧрдгрдирд╛рдУрдВ рдХреЛ GPU рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрда рдЧреБрдирд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ!

рд▓реЗрдХрд┐рди, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЖрдк рдмрд╕ рд╕рдм рдХреБрдЫ GPU рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВ, рд╣рдо рдЖрдЧреЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

GPU рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╕реАрдкреАрдпреВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рддреБрд▓рдирд╛


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


рд╕реАрдкреАрдпреВ рдХреЛрд░

рдХреНрдпрд╛ рдЦрд╛рд╕ рд╣реИ? рдПрдХ рдХреЛрд░ рдФрд░ рд╕рд╣рд╛рдпрдХ рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ред

рдЕрдм рд╣рдо GPU рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:


GPU Core

A рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХреЛрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдорддреМрд░ рдкрд░ рдХрдИ рд╣рдЬрд╛рд░, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдмреНрд▓реЙрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ; NVIDIA рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП, рдЖрдорддреМрд░ рдкрд░ 32 рдкреНрд░рддреНрдпреЗрдХ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ред GPU рдХреЛрд░ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рддрддреНрд╡реЛрдВ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реАрдкреАрдпреВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдХреЛрдИ рдкреНрд░реАрдлреИрдЪрд░реНрд╕, рдмреНрд░рдВрдЪ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВред

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

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

GPU рд╕реАрдорд╛рдУрдВ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ


рдпрд╣ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рдХреНрдпрд╛ рд╕реАрдорд╛рдПрдБ рд▓рдЧрд╛рддрд╛ рд╣реИ:

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

рдпрд╣ рдХреНрдпрд╛ рдЕрд╡рд╕рд░ рдЦреЛрд▓рддрд╛ рд╣реИ:

  • рджрд░рдЕрд╕рд▓, рдЙрдиреНрд╣реАрдВ SIMD рдЧрдгрдирд╛рдУрдВ рдХрд╛ рддреНрд╡рд░рдгред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рдореВрд▓ рддрддреНрд╡ рдЬреЛрдбрд╝ рд╣реИ, рдФрд░ рдЪрд▓реЛ рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред

SIMD рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рд╢рд╛рд╕реНрддреНрд░реАрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдХрдореА


рдкрд░рд┐рд╡рд░реНрддрди


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

void func(float *A, float *B, size)
{ 
   for (int i = 0; i < size; i++) 
   { 
       A[i] += B[i]
   } 
}

рдПрдХ рд▓реВрдк рдФрд░ рд░реИрдЦрд┐рдХ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рддрддреНрд╡реЛрдВ рдХрд╛ рд╢рд╛рд╕реНрддреНрд░реАрдп рд▓реВрдкрдмреИрдХред

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ GPU рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

void func(float *A, float *B, size) 
{ 
   int i = threadIdx.x; 
   if (i < size) 
      A[i] += B[i] 
}

рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдереНрд░реЗрдбрдЖрдИрдбреАрдПрдХреНрд╕ рдЪрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдХрд╣реАрдВ рднреА рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рд╛рдВ, рдЗрд╕рдХреА рдкреНрд░рдгрд╛рд▓реА рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рд░рдгреА рдореЗрдВ рддреАрди рддрддреНрд╡ рд╣реИрдВ, рдФрд░ рдЖрдк рдЗрд╕реЗ рддреАрди рд╕рдорд╛рдирд╛рдВрддрд░ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ - рдЗрдВрдбреЗрдХреНрд╕ рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдирдВрдмрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рде рдХрдИ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ - x, y, zред

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

int i = blockIdx.x * blockDim.x + threadIdx.x; // blockIdx тАУ  , blockDim тАУ  , threadIdx тАУ    

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ: рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдзрд╛рдЧреЗ рдЬреЛ рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде, рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдбреЗрдЯрд╛, рдЕрд░реНрдерд╛рддреНред рд╡рд╣реА SIMDред

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

рдПрдХрддреНрд░реАрдХрд░рдг


рдЖрдЗрдП рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ SIMD рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХрддреНрд░реАрдХрд░рдг рдХреИрд╕реЗ рджрд┐рдЦреЗрдЧрд╛:
 

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

рдЫрдВрдЯрд╛рдИ


рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЫрдВрдЯрд╛рдИ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рдЧрддреА рд╣реИред

GPU рдкрд░ рджреЛ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЫрдБрдЯрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ:

  • Bitonic-рддрд░рд╣
  • рдореВрд▓рд╛рдВрдХ-рддрд░рд╣

рд▓реЗрдХрд┐рди рд░реЗрдбрд┐рдХреНрд╕-рд╕реЙрд░реНрдЯ рдЕрднреА рднреА рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрддреНрдкрд╛рджрди-рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рдЬреЛ рд▓реЛрдЧ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡реЗ https://www.codeproject.com/Articles/543451/Parallel-Radix-Sort-on-the-GGU-use-Cplusplus- рдкрд░ рдореВрд▓рд╛рдВрдХ-рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдПрдордкреА рдФрд░ https://stackoverflow.com/a/26229897

рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЧреИрд░-рд░реИрдЦрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рднреА рдПрдХ рд╕рд┐рдордб рджреГрд╢реНрдп рдореЗрдВ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рдЕрдм, GPU рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рддрдХрдиреАрдХ рдХреЗ рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░реЗрдВ?

рдХрд╣рд╛ рд╕реЗ рд╢реБрд░реБрд╡рд╛рдд рдХрд░реЗ


GPU рдХреЗ рддрд╣рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рджреЛ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • OpenCL
  • CUDA

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

рдЖрдк OpenCL рдХрд╛ рдЙрдкрдпреЛрдЧ C / C ++ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд╛рдЗрдВрдбрд░ рд╣реИрдВред

OpenCL рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ OpenCL рдЗрди рдПрдХреНрд╢рди рдкреБрд╕реНрддрдХ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкрд╕рдВрдж рдЖрдИ ред рдпрд╣ GPU рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рднреА рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдмрд┐рдЯреЛрдирд┐рдХ-рд╕реЙрд░реНрдЯ рдФрд░ рд░реЗрдбрд┐рдХреНрд╕-рд╕реЙрд░реНрдЯред

CUDA NVIDIA рдХреА рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рддрдХрдиреАрдХ рдФрд░ SDK рд╣реИред рдЖрдк C / C ++ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

OpenCL рдФрд░ CUDA рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдорд╛рдирдХ рд╣реИ, рджреВрд╕рд░рд╛ рдкреВрд░рд╛ рдПрд╕рдбреАрдХреЗ рд╣реИред рдлрд┐рд░ рднреА, рдХрдИ рд▓реЛрдЧ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП CUDA рдЪреБрдирддреЗ рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рддрдХрдиреАрдХ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╢реБрд▓реНрдХ рдФрд░ рдХреЗрд╡рд▓ NVIDIA рдХрд╛рд░реНрдб рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрдиреЗрдХ рдХрд╛рд░рдг рд╣реИрдВ:

  • API
  • , GPU, (host)
  • , ..

рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдореЗрдВ рдпрд╣ рддрдереНрдп рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ CUDA рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирдХ C / C ++ рдХреЛрдб рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ CUDA рдкреБрд╕реНрддрдХ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓реА, рд╡рд╣ рдереА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ CUDA C рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереЛрдбрд╝реА рдкреБрд░рд╛рдиреА рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ NVIDIA рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рддрдХрдиреАрдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдЗрди рдХрд┐рддрд╛рдмреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ, рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдФрд░ рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рдорд╣реАрдиреЗ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ? 

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ GPU рдХреЗ рддрд╣рдд рд╡рд┐рдХрд╛рд╕ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ: XGBoost, cuBLAS, TensorFlow, PyTorch рдФрд░ рдЕрдиреНрдп, рд╣рдо рдЬреЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЫрдВрдЯрд╛рдИ, рдЦреЛрдЬ, рдПрдХрддреНрд░реАрдХрд░рдг рдФрд░ рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

thrust::host_vector<DataType> h_vec(size); //    
std::generate(h_vec.begin(), h_vec.end(), rand); //   
thrust::device_vector<DataType> d_vec = h_vec; //         
thrust::sort(d_vec.begin(), d_vec.end()); //    
thrust::copy(d_vec.begin(), d_vec.end(), h_vec.begin()); //   ,     

(рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЛ NVIDIA рд╕реЗ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)

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

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

GPU рдПрд▓реНрдЧреЛрд░рд┐рдердо рдкрд░рд┐рдгрд╛рдо


GPU рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдореЗрдВ рдЯреЗрд╕реНрд▓рд╛ k80 рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛, рдпрд╣ рдЖрдЬ рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд░реНрд╡рд░ рдХрд╛рд░реНрдб рдирд╣реАрдВ рд╣реИ (рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЯреЗрд╕реНрд▓рд╛ v100), рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рд╕рд╕реНрддреА рдФрд░ рдмреЛрд░реНрдб рдкрд░ рд╣реИ:

  • 4992 рдХреНрдпреВрдбрд╛ рдХрд░реНрдиреЗрд▓
  • 24 рдЬреАрдмреА рдореЗрдореЛрд░реА
  • 480 Gb / s - рдореЗрдореЛрд░реА рдмреИрдВрдбрд╡рд┐рдбреНрде 

рдФрд░ рд╕реАрдкреАрдпреВ рдкрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрдВрдЯреЗрд▓ рдПрдХреНрд╕реЙрди рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реАрдкреАрдпреВ E5-2686 v4 @ 2.30GHz рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛

рдкрд░рд┐рд╡рд░реНрддрди



рдПрдордПрд╕рдкреА рдореЗрдВ GPU рдФрд░ CPU рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп

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

рдЖрдЗрдП рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ GPU рдкрд░ рдХрд┐рддрдиреА рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдПрдХрддреНрд░реАрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХрддреНрд░реАрдХрд░рдг



рдПрдордПрд╕

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

рдЪрд▓реЛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ - рдЫрдБрдЯрд╛рдИред

рдЫрдВрдЯрд╛рдИ



рдПрдордПрд╕ рдореЗрдВ рдЬреАрдкреАрдпреВ рдФрд░ рд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рдЫрдВрдЯрдиреА

рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдо рдкреВрд░реЗ рдбреЗрдЯрд╛ рдРрд░реЗ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдВ рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреАрдкреАрдпреВ 800 рдПрдордмреА рдбреЗрдЯрд╛ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 25 рдЧреБрдирд╛ рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдУрд╡рд░рд╣реЗрдб


рдЬреИрд╕рд╛ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рднреА рдЬреАрдкреАрдпреВ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдЧрд╛ рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рд░реИрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреА рдореЗрдореЛрд░реА (рдЧреЗрдо рдХрдВрд╕реЛрд▓ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдкреАрдпреВ рдФрд░ рдЬреАрдкреАрдпреВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рд╕реЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд╡рд░рд╣реЗрдб рд╣реИред рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдореЛрд░реА рдмреИрдВрдбрд╡рд┐рдбреНрде рдпрд╛ рдореЗрдореЛрд░реА рдмреИрдВрдбрд╡рд┐рдбреНрде рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдб рдХреЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЯреЗрд╕реНрд▓рд╛ k80 рдХреЗ рд▓рд┐рдП рдпрд╣ 480 GB / s рд╣реИ, Tesla v100 рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 900 GB / s рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЖрдк рдХрд╛рд░реНрдб рдореЗрдВ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдереНрд░реВрдкреБрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрдИ рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рдЕрдореЗрдЬрд╝реЕрди рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЯреЗрд╕реНрд▓рд╛ k80 рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:


GPU рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдбреЗрдЯрд╛ рдХреЛ RAM рдореЗрдВ ms

HtoD рдкрд░



рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - GPU рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ - рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдкрд░ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ DtoH - рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рд╕реЗ RAM рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рд╣реИ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдБ рд▓рд┐рдЦреЗрдВред

рджреВрд╕рд░рд╛ - рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдк 350 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рд╕реЗ рд╡рд┐рд▓рдВрдмрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдХрдо рд╡рд┐рд▓рдВрдмрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЪрд╛рд░реНрдЯ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд╡рд░рд╣реЗрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ:


рдбреЗрдЯрд╛ рдХреЛ GPU рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ ms рдореЗрдВ RAM рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ

рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ


рд╕рдмрд╕реЗ рдЖрдо рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЧреЗрдо рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ? рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡реЗ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреАрдорддреЛрдВ рдореЗрдВ рдХрд╛рдлреА рднрд┐рдиреНрдирддрд╛ рд╣реИред


рд╕рд░реНрд╡рд░ (NVIDIA) рдФрд░ рдЧреЗрдо рдХрд╛рд░реНрдб рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░:

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

рдпреЗ рд╣реИрдВ, рд╢рд╛рдпрдж, рдореБрдЦреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рд╛ред

рдмрд╣реБ рд╕реВрддреНрд░рдг


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


GPU рдФрд░ CPU рдкрд░ рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп ms рдореЗрдВ 1000 x 60 рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде

ред рдпрд╣ рдЧреНрд░рд╛рдл 1000 x 60 рддрддреНрд╡реЛрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдЧрдгрдирд╛ рд╢реБрд░реВ рдХреА рдЬрд╛рддреА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдкреАрдпреВ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП GPU рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ (рдмрд╣реБрдд рд╣рд╛рдЗрдкрд░-рдХреНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред 

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


рдПрдордПрд╕рдкреА рдореЗрдВ 10,000 x 60 рдХреЗ рд╕рд╛рде GPU рдФрд░ CPU рдкрд░ рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордпред

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

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

рд╣рдо рдХреБрдЫ рдФрд░ рд╕рд╡рд╛рд▓реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред

рд╕рдВрд╕рд╛рдзрди рдХреА рд╕реАрдорд╛


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ, рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рджреЛ рдореБрдЦреНрдп рд╕рдВрд╕рд╛рдзрди рдХреЛрд░ рдФрд░ рдореЗрдореЛрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

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

рдХрдВрдЯреЗрдирд░ рдФрд░ рдЬреА.рдкреА.рдпреВ.


рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╢реНрди: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕рд░реНрд╡рд░ рдореЗрдВ рдХрдИ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рд╣реИрдВ?

рдлрд┐рд░ рд╕реЗ, рдЖрдк рдЖрд╡реЗрджрди рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдЬреАрдкреАрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рд╣реИред рдЖрдк рдирд┐рдпрдорд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди NVIDIA рдЕрдкрдиреЗ NGC рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП GPU рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреЗ рджреГрд╢реНрдпрддрд╛ рдХреЛ рдХрдВрдЯреЗрдирд░ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рдЙрдкрдпреЛрдЧ рдкрд░ рдУрд╡рд░рд╣реЗрдб рд▓рдЧрднрдЧ 3% рд╣реИред

рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ


рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓, рдЕрдЧрд░ рдЖрдк рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрдИ GPU рдкрд░ рдПрдХ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ?

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NVIDIA рдХрд╛рд░реНрдб рдХреЗ рдмреАрдЪ рд╕реАрдзреЗ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - NVLINK , рдЬреЛ рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реИред рдФрд░ рдЕрдиреНрдп PCI рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдХрд╛рд░реНрдб рдХреА рдореЗрдореЛрд░реА рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХ рд╣реИ - GPUDirect RDMA , inclред рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ ред

рдЕрдиреБрд╢рдВрд╕рд╛рдПрдБ


рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ GPU рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ:

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

рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╢реНрди рдкреВрдЫрдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рдХрд┐рддрдиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╢реНрди рд╣реЛрдВрдЧреЗ 
  • рдЖрдк рдХрд┐рд╕ рд╡рд┐рд▓рдВрдм рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ
  • рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХрдИ рдХрд╛рд░реНрдбреЛрдВ рдпрд╛ рдЬреАрдкреАрдпреВ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ 

рдпрд╣ рд╕рдм, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдФрд░ рдЖрдкрдХреЛ рд╕рд╣реА рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреА!

рд╕рдВрджрд░реНрдн


рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдФрд░ рдЬреАрдердм рдкрд░ рдкрд░рд┐рдгрд╛рдо - https://github.com/tishden/gpu_benchmark/tree/master/cuda

рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдПрдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ "GPU рдбреЗрдЯрд╛рдмреЗрд╕ - рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ"

NVIDIA NGC рдХрдВрдЯреЗрдирд░ рд╡реЗрдмрд┐рдирд╛рд░ - http : //bit.ly/2UmVIVt рдпрд╛ http://bit.ly/2x4vJKF

All Articles