
рдЕрдиреБрдЪреНрдЫреЗрдж 1 рдФрд░ рдЕрдиреБрдЪреНрдЫреЗрдж 2 рдХреА рдирд┐рд░рдВрддрд░рддрд╛ред
рдХрдЯ рдХреЗ рдиреАрдЪреЗ, рдореИрдВ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдЖрдИ рдорд┐рдиреА рдХрдк рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред рдмрд▓реНрдХрд┐ рдпрд╣ рд╣реИ рдПрдХ рдирд┐рдмрдВрдз рд╡рд┐рд╖рдп GPU рдкрд░ред
- рдЖрдкрдХрд╛ рдирд╛рдо рдЬрд╛рджреБрдИ рд╣реИ ...
-рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬреЛрдПрд▓? .. рдЬрд╛рджреВ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ ...
рдмрдЪрдкрди рдореЗрдВ, рд╣рдо рдЙрд╕ рдЙрдореНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд░рд╕рд╛рдпрди рд╡рд┐рдЬреНрдЮрд╛рди рдЕрднреА рддрдХ рд╕реНрдХреВрд▓ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдмрд╕ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд▓реЗрдЦрдХ рдЬрд▓рддреА рд╣реБрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдореЛрд╣рд┐рдд рд╣реЛ рдЧрдпрд╛ рдерд╛, рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдиреЗ рдЙрд╕рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдШрд░ рдХреЗ рдкрд╛рд╕ рдорд╛рд╕реНрдХреЛ рдмрдВрдЬрд░ рднреВрдорд┐ рдХрднреА-рдХрднреА рд╡рд┐рднрд┐рдиреНрди рдмрдЪреНрдЪреЛрдВ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдЪрдордХ рд╕реЗ рдЬрдЧрдордЧрд╛ рдЙрдарддреА рдереА, рдХрд╛рд▓реЗ рд░рдВрдЧ рдХрд╛ рдПрдХ рд╣реЛрдордореЗрдб рд░реЙрдХреЗрдЯред рдмрд╛рд░реВрдж, рдЪреАрдиреА-рдирд╛рдЗрдЯреНрд░реЗрдЯ рдХрд╛рд░рдореЗрд▓ рдЖрджрд┐ рдкрд░ред рджреЛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛рдУрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛: рдПрдХ рдШрд░ рдореЗрдВ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдирд╛рдЗрдЯреНрд░реЛрдЧреНрд▓рд┐рд╕рд░реАрди рдХрд╛ рдЕрдкрдШрдЯрди, рдЬрд┐рд╕рдореЗрдВ рдПрд╕рд┐рдб рд╕реЗ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реА рдЫрдд рд╣реЛрддреА рд╣реИ рдФрд░ рдбрд┐рдлреЗрдВрд╕ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ рдкреБрд▓рд┐рд╕ рд░реВрдо рдореЗрдВ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдПрд╡рд┐рдпреЛрдЯреЛрд░реНрдирд╛рдпрд╛ рдореЗрдЯреНрд░реЛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВред
рдФрд░ рдлрд┐рд░ рдпрд╛рдорд╛рд╣рд╛ рдПрдордПрд╕рдПрдХреНрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рднреМрддрд┐рдХреА рд╕реНрдХреВрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдШрд░ рдкрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдордХреЗ рдХреИрд▓рдХреБрд▓реЗрдЯрд░, рдФрд░ рд░рд╕рд╛рдпрди рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдмрдЪреНрдЪреЗ рдХреЗ рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВред рдФрд░ рд▓реЗрдЦрдХ рдХреЗ рдкрд╛рд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд рдХреА рдХрдореА рдереА рдЬреЛ рдЬрд▓рддреА рд╣реБрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА, рдЙрд╕рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реБрд▓рдЧ рд░рд╣реЗ рдереЗ, рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╢рдХреНрддрд┐ рдХреА рдпрд╣ рдЕрдиреБрднреВрддрд┐ рдирд╣реАрдВ рдереАред рдЖрдк рдЦреЗрд▓реЛрдВ рдореЗрдВ рдЧрдгрдирд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рд▓реЗрдЦрдХ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдкрд╛рдк () рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рдП, рдХреЛрдИ рдЗрдВрдЯрд░рдиреЗрдЯ рдирд╣реАрдВ рдерд╛ ...
рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦрдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐, рд╕реНрд╡рдЪреНрдЫ рдЬрд▓ рд╕реЗ рдЦреБрд╢реА рдХреА рднрд╛рд╡рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдореИрдВ рдЧрдгрдирд╛ рдореЗрдВ рдЬреАрдкреАрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдПрдХ рд╣рдм рдкрд░ GPU рдкрд░ рдЧрдгрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦ рд╣реИрдВред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рднреА рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рдирд┐рд╡рд╛рд░ рдХреА рд╕реБрдмрд╣ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреА рд╕рдорд╛рдирддрд╛рд╡рд╛рдж рдХреА рдУрд░ рдзрдХреЗрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рд╕рд░рд▓ рд░реВрдкреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред GPU рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрдИ рдЪреМрдЦрдЯреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз NVIDIA CUDA рдФрд░ OpenCL рд╣реИрдВред рд╣рдо CUDA рд▓реЗрдВрдЧреЗ рдФрд░ рддреБрд░рдВрдд рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реЗрдЯ рдХреЛ C ++ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ CUDA рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C # рдореЗрдВ ALEA GPU, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
рдЬреИрд╕реЗ рд╡реЗ рдПрдХ рд╕рдордп рдореЗрдВ рдЬреЗрдЯ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдореВрд╣рд┐рдХ рдХрд╛рд░ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рдереЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рдХреБрдЫ рд╕рдВрдХреЗрддрдХ рдЖрдВрддрд░рд┐рдХ рджрд╣рди рдЗрдВрдЬрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ: рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреНрд░рд╡реНрдпрдорд╛рди рдЪрд░рд┐рддреНрд░ рдХреЗ рдХреБрдЫ рддрддреНрд╡, рдмрд╣реБрд▓рддрд╛ рд╣реИред рдПрдХ рдмреЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ (рдмрд╣реБрдд рд╕рд╛рд░реЗ рдиреНрдпреВрд░реЙрдиреНрд╕, рддрдВрддреНрд░рд┐рдХрд╛ рдХрдиреЗрдХреНрд╢рди) рджреНрд░рд╡реНрдпрдорд╛рди рдФрд░ рдмреЙрдЯреНрд╕ рдХреА рдЖрдмрд╛рджреА рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддреЗ рд╣реИрдВ (рдкреНрд░рддреНрдпреЗрдХ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЯрдХрд░рд╛рд╡ рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдЧрдгрдирд╛, рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рдмреЙрдЯ 300-1000 рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдХреЗрдВрджреНрд░реАрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдмрд╕ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕реБрд▓рдЧрдирд╛, рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдлреНрд░реЗрдо рдХреЗ рдмреАрдЪ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░реБрдХрдирд╛)ред
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреНрд░рд╡реНрдпрдорд╛рди рд╡рд┐рдХрд▓реНрдк рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЧрдгрдирд╛ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рд╕реВрдЪреА рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рддрддреНрд╡ рдкрд░ рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░рдгреА рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХрд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪрд╛рд▓ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд╡реГрджреНрдзрд┐ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдЕрдиреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдФрд░ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрдХреНрд░ рдкрд░ рдорд╛рдереЗ рдореЗрдВ рдирд╣реАрдВ рд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред рд╢рдмреНрджрд╛рдВрдХрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рд╕рдлрд▓ рдЬрди рдЪрд░рд┐рддреНрд░ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрдХреЗрдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рди рд▓реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рди рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рди рдХрд░реЗрдВред рдПрдХ рдкрд░реА рдХрдерд╛ рдХреА рддрд░рд╣ рдХреБрдЫ: рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рди рдмрджрд▓реЗрдВ, рдЕрдиреНрдпрдерд╛ GPU рдПрдХ рдХрджреНрджреВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдХреЗрдВрджреНрд░реАрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдпрд╛ рддрд╛рд░реНрдХрд┐рдХ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдХрдИ рдХреЛрд░ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХ рдкрд╛рдардХ рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдорд╛рдирддрд╛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реИрдХрдбрд╝реЛрдВ рдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред
рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рджрд┐рдЦрд╛рдИ рджрд┐рдП: рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрдХреНрд░ ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдПрдХ рд╡реНрдпрд╛рдкрдХ рдЕрд░реНрде рдореЗрдВ, рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░рддрд╛ рд╣реИ
рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ
CUDA (рдХрд░реНрдиреЗрд▓) рдореЗрдВ рдореБрдЦреНрдп рд▓реВрдк рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
int tid = blockIdx.x * blockDim.x + threadIdx.x; int threadN = gridDim.x * blockDim.x; for (int pos = tid; pos < numElements; pos += threadN) { // pos, , thread pos. : thread , thread pos=1146 thread c pos=956. . . }
рдмрд╣реБрдд рдХреБрдЫ рдкреНрд░рд▓реЗрдЦрди рдФрд░ CUDA рдХреЗ рд▓рд┐рдП рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, GPU рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЙрди рдкрд░ рдХрд╛рд░реНрдп рдХреЛ рдХреИрд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреНрд░рд╡реНрдпрдорд╛рди рддрддреНрд╡ рд╣реИрдВ, рддреЛ рдЙрдкрд░реЛрдХреНрдд рд▓реВрдк рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рд▓реВрдк рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬреЛ рд╕реБрдЦрдж рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдореВрд╣рд┐рдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдЧ рддреЗрдЬреА рд╕реЗ рд╕рдВрдХреАрд░реНрдг рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рдЧреЗрдо рдмрдирд╛рдиреЗ, 3 рдбреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЗрдВрдЬрди , рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ, рд╡реАрдбрд┐рдпреЛ рдПрдбрд┐рдЯрд┐рдВрдЧ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд╛рдардХ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рд╢реЛрдзрди рднрд╛рд░реА рдкрд╣рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо, рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо, рд░реВрдкрд░реЗрдЦрд╛, рдЬреНрдЮрд╛рдд рдФрд░ рдЕрдЬреНрдЮрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред рдпрд╣реА рд╣реИ, рдХреНрд╖реЗрддреНрд░ рдХреЗрд╡рд▓ рд╡рд┐рд╖рдп рд╕реЗ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдЫреЛрдЯреЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд░реЙрдХреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдкреЗрд╕рдПрдХреНрд╕ рдФрд░ рд░реЛрд╕реНрдХреЛрд╕рдореЛрд╕ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдШрд░реЗрд▓реВ, рд▓реЗрдХрд┐рди рдЧрдгрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреБрд░рд╛рдИред

рдпрд╣рд╛рдВ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреНрд╡рд▓рдВрдд рд░реЙрдХреЗрдЯ рдХрд╛ рдЪрд┐рддреНрд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рдирд╛ рдЬреЛ рдЖрдкрдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрдХреНрд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдФрд░ NVIDIA рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ CUDA рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИред
рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдереНрд░рд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ "рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ" рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рд╣реИрдмреЗ рдкрд░ рдЗрд╕рдХреА рдкреВрд░реА рд╕рдореАрдХреНрд╖рд╛ рдирд╣реАрдВ рдорд┐рд▓реАред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ CUDA рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддреАрди рд╡рд╛рдХреНрдп рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЖрдк рдЕрдзрд┐рдХ рд╢рдмреНрджреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рддреЛ рд▓рд┐рдВрдХ рдкрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП ред
CUDA рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд:
GPU рдкрд░ рдЧрдгрдирд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░реНрдиреЗрд▓ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ C. рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдХрд░реНрдиреЗрд▓, рдмрджрд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ GPU рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╡рд╛рдкрд╕ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред CUDA рдкрд░ рдкрд░рд┐рд╖реНрдХреГрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдорди рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдереНрд░рд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░реВрдЯреАрди рдХреЛ рд╣рдЯрд╛рддреА рд╣реИ рдФрд░ CUDA рдХреЗ рд▓рд┐рдП рдХреБрдЫ "рдЬрдЯрд┐рд▓" рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕рдордХрд╛рд▓рд┐рдХ рдПрд░реЗ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ред рдЕрдм рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХрд░реНрдиреЗрд▓, рд▓реЛрдб рдкреЙрдЗрдВрдЯрд░реНрд╕ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрди рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╕реЗ GPU рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЖрдкрдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдФрд░ CUDA рд╕реЗ рдереЛрдбрд╝рд╛ рд╣реАрди рдЧрддрд┐ рдХреЗ рд╕рд╛рде рд╕рднреА рд░рд╣рд╕реНрдп рд╣реЛрдВрдЧреЗред рдереНрд░рд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА CUDA рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдмреЗрд░ рдХреНрд╖реЗрддреНрд░ рд╣реИред
рдереНрд░рд╕реНрдЯ рдореЗрдВ рдЖрдкрдХреЛ рдЬреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рдЗрд╕рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднреАрддрд░ рдПрдХ рд╕рд░рдгреА (рдереНрд░рд╕реНрдЯ :: рд╡реЗрдХреНрдЯрд░), рдЬреЛ рдирд┐рдпрдорд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ (std :: рд╡реЗрдХреНрдЯрд░) рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред рдпрд╣реА рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХ рдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЕрд░реНрде рд╕рдЪреНрдЪрд╛рдИ рдХреЗ рд╕рдорд╛рди рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рд╕рд░рдгрд┐рдпрд╛рдВ рд╣реИрдВ, рдПрдХ рдЬреАрдкреАрдпреВ (рдбрд┐рд╡рд╛рдЗрд╕) рдкрд░, рджреВрд╕рд░рд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо (рд╣реЛрд╕реНрдЯ) рдореЗрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреА рд╕рд░рд▓рддрд╛ (рдПрдХреНрд╕, рд╡рд╛рдИ, рдЬреЗрдб рд╕рд░рдгрд┐рдпреЛрдВ) рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛:
// initialize X to 0,1,2,3, .... thrust::sequence(X.begin(), X.end()); // compute Y = -X thrust::transform(X.begin(), X.end(), Y.begin(), thrust::negate<int>()); // fill Z with twos thrust::fill(Z.begin(), Z.end(), 2); // compute Y = X mod 2 thrust::transform(X.begin(), X.end(), Z.begin(), Y.begin(), thrust::modulus<int>()); // replace all the ones in Y with tens thrust::replace(Y.begin(), Y.end(), 1, 10);
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ CUDA рдХрд░реНрдиреЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рдпрд╣ рдХрд┐рддрдирд╛ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ, рдФрд░ рдереНрд░рд╕реНрдЯ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реЗрдЯ рдмрдбрд╝рд╛ рд╣реИ ред рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ, рдЬреЛ CUDA рдореЗрдВ рдПрдХ рдЕрд▓рдЧ cuRAND рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдЕрдзрд┐рдорд╛рдирддрдГ рдПрдХ рдЕрд▓рдЧ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд░реНрдиреЗрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд░реАрдм рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ, рд╕рдореЗрдЯрдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
рд▓реЗрдЦрдХ рдХреЛ рджреЛ рдорд╣реАрдиреЗ CUDA рдФрд░ C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдХрдо рдЕрдиреБрднрд╡ рд╣реИред рдЗрд╕ рд╡рд░реНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реА # рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдВрдкреНрдпреВрдЯрд░, рд╕реНрдХреВрд▓ рднреМрддрд┐рдХреА рдФрд░ рдПрдХ рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдЧрдгрд┐рдд рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╢реБрд░реБрдЖрддреА рдкрд░рд┐рдЪрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдереЛрдбрд╝рд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдРрд╕рд╛ рдХрд╣реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдореИрдВ рдЬреЛ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╣рд░ рдЪреАрдЬ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓реА, рдмрд▓реНрдХрд┐ рд╡рд╣ рд╕реА ++ рдПрдХ рд╕рд╣рдЬ рднрд╛рд╖рд╛ рдмрди рдЧрдИ (рдореИрдВ рдЗрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рдбрд░рддрд╛ рдерд╛, рд╣рдмреНрд░реНрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл "рдореЗрдордиреЗ рдХреЗ рдХрд╛рд░реНрдп" тЖТ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреА рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ, рдЬреИрд╕реЗ рд╕рдм рдХреБрдЫ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ ", рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдиреЗ рдХрд╛рдлреА рдЕрдиреБрдХреВрд▓ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг (рдЖрдИрдбреАрдИ) рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ рд╣реИред рдЕрдкрдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реА рднрд╛рд╖рд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рд╕реНрдореГрддрд┐ рд╕реЗ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреИрд╕реЗ рдерд╛ред рдХрдо рд╕реЗ рдХрдо, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдирд┐рд░реНрдорд╛рдг рдкрд░ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдиреЗ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЙрдЪреНрдЪ рд▓реЛрдб рдкрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдФрд░ рдЕрдиреНрдп рд╡рд┐рдлрд▓рддрд╛рдПрдВ рдирд╣реАрдВ рдереАрдВред рдпрд╣ CUDA рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рддреЛ рдпрд╣ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░рд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ GPUs рдкрд░ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЕрдЧрд░ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЫреЛрдЯрд╛ рд░реЙрдХреЗрдЯ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рд╕реЗ рдзреБрдЖрдВ рд╣реЛрдЧрд╛ред
GPU рдХреЗ рд╕рд╛рде рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ, рд▓реЗрдЦрдХ рд╕реЗрд▓реБрд▓рд░ рдСрдЯреЛрдореЗрдЯрд╛ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИ ред рдПрдХ рд╕рдордп рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдФрд░ рдлреИрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рдереА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рджрд┐рдорд╛рдЧ рдХреЛ рдЬрдмреНрдд рдХрд░ рд▓рд┐рдпрд╛ред
рддрдХ:
"рднреМрддрд┐рдХреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рддреНрд░рд╛, рд╕рдордп рдФрд░ рд╕реНрдерд╛рди рд╕рд╣рд┐рдд, рдкрд░рд┐рдорд┐рдд рдФрд░ рдЕрд╕рддрдд рд╣реИред"
рд╕реЗрд▓реБрд▓рд░ рдСрдЯреЛрдореИрдЯрди рд╕реЗ рдирд╣реАрдВред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдВрджрд░ рд╣реИ рдЬрдм рддреАрди рд╕рд░рд▓ рд╕реВрддреНрд░ рдЗрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрджрд┐ CUDA рдкрд░ рд╕реЗрд▓реБрд▓рд░ рдСрдЯреЛрдореЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧреАред
рдФрд░ рдпрд╣ рд╕реЗрд▓реБрд▓рд░ рдСрдЯреЛрдореЗрдЯрд╛ рдХрд╛ рд╕реНрд░реЛрдд рд╣реИ (рд╡реАрдбрд┐рдпреЛ рдХреЗ рддрд╣рдд рд╕реВрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВ):
рдирд╛рд╢реНрддреЗ рдХреЗ рдмрд╛рдж рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░, рдПрдХ рд╕рд╛рдВрд╕ рдореЗрдВ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдХреЙрдлреА рдХрд╛ рд╕рдордпред рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдкрд╛рдардХ рд╣реИред