рдереЛрдбрд╝рд╛ рдЗрддрд┐рд╣рд╛рд╕ рдпрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рддреАрди рд╕рд╛рд▓ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рд╕рд╛, рдХреНрд░реЛрдиреЛрд╕ рдЧреНрд░реБрдк рдиреЗ рдУрдкрдирд╕реАрдПрд▓ 1.1 рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреЗрд╢ рдХрд┐рдпрд╛ рдФрд░ рдПрдирд╡реАрдбрд┐рдпрд╛ рдиреЗ рддреБрд░рдВрдд рдпрд╣ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд░реА рдЪрд╛рд▓рдХ рдХреЛ рдирдП рдорд╛рдирдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИ (рдпрд╣рд╛рдВ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдмрдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ), рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗред CUDA 4 рдмрд╛рд╣рд░ рдЖрдпрд╛, рд▓реЗрдХрд┐рди OpenCL рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ рдФрд░ рдХрднреА рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдУрдкрдирд╕реАрдПрд▓ рдХреЗ рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирдП рдбреНрд░рд╛рдЗрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддред рдореБрдЭреЗ CUDA 3 + OpenCL 1.1 рдХреЗ рд╕рд╛рде рдПрдХ рдкреБрд░рд╛рдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдпрд╛ CUDA 4 + OpenCL 1.0 рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдЪреБрдирдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЖрдЬ рдРрд╕рд╛ рд╣реЛ рдЧрдпрд╛! рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдПрдХ рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ 280.13 рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрднреА рднреА рдмреАрдЯрд╛ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреНрдпрд╛ рдирдпрд╛ рдФрд░ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕ рдпрд╛ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЖрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
OpenCL 1.1 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ
рдЖрдЗрдП рдЦрд╝рд╛рд░реЛрд╕ рд╕рдореВрд╣ рд╕реЗ рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рд╣реИ рдЬреЛ рд╡рд╣рд╛рдБ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред
рдореЗрдЬрдмрд╛рди-рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛
рдереНрд░реЗрдб рд╕реЗрдлреНрдЯреА рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИ, рдЕрдм рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд┐рддрдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдХрдИ рдХрд╛рд░реНрдб рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП, рддреЛ рд╣рд╛рдВ, рдЬреАрд╡рди рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: clSetKernelArg рдлрд╝рдВрдХреНрд╢рди рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЗрд╕реЗ рдЙрд╕реА рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ)ред рд╣рдордиреЗ рдЗрд╕реЗ рдпрд╛ рддреЛ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ (рдореБрдЭреЗ рдмрд╣реБрдд рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣реА рд╣реИ), рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрднреА рднреА рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рддрдереНрдп рдПрдХ рддрдереНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрдк рдмрдлрд░ рд╡рд╕реНрддреБ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдм рдЖрдк рдмрдлрд░ рдХреЛ рдХрдИ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдЙрдкрдХрд░рдг рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЙрдкрдХрд░рдг рдореЗрдВ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕реЗ рдХрдИ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛рд░реНрдб рдФрд░ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╕реБрдзрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред рд╣рд╛рдВ, рдФрд░ рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмрдлрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ред
рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрд╛рд░реНрдХрд┐рдХ): рдЖрдк рдПрдХ рд╕рд╛рде рдЙрдк-рдмрдлрд░ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЯрд░рд╕реЗрдХреНрдЯрд┐рдВрдЧ рд╕рдм-рдмрдлрд░ рдпрд╛ рдореБрдЦреНрдп рдмрдлрд░ рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдИрд╡реЗрдВрдЯ
ClCreateUserEvent рдФрд░
clSetUserEventStatus рдХрдорд╛рдВрдб рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдерд╛ рдЬреЛ рдУрдкрдирд╕реАрдПрд▓ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рд╣реБрдИ рдереАрдВред рдлрд┐рд░ рд╕реЗ, рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд┐рд░реНрдл рдПрдХ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рдХрддрд╛рд░ рдореЗрдВ рдирдП рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛), рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЗрд╡реЗрдВрдЯ рдХреЙрд▓рдмреИрдХ
ClSetEventCallback рдлрд╝рдВрдХреНрд╢рди
рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ , рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдШрдЯрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред рдЖрдк рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдРрдб-рдСрди рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореБрдЭреЗ рд╣рд░ рдХреБрдЫ рдПрдордПрд╕ рдХреА рдШрдЯрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдкрдбрд╝реЗ, рдЕрдм рд╕рдм рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрди рдХреБрдЫ рд╕реЗрдХрдВрдбреЛрдВ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ ActionScript рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ :)
рд╡реИрд╕реЗ, рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдлрд╝рдВрдХреНрд╢рди
clSetMemObjectDestructorCallback рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм cl_mem рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
3-рдШрдЯрдХ рд╡реЗрдХреНрдЯрд░
2, 4, 8, 16 рдЖрдХрд╛рд░ рд╡рд╛рд▓реЗ рд╡реИрдХреНрдЯрд░ рд╣реБрдЖ рдХрд░рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА 3-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рддреАрди-рдЖрдпрд╛рдореА рд╡реИрдХреНрдЯрд░ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЪреАрдЬ рд╣реИрдВред рдФрд░ рдпрджрд┐ рдЖрдк 4-рдЖрдпрд╛рдореА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдЦреЛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдмрдбрд╝рд╛ рдмреЗрдХрд╛рд░ рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдУрдкрдирд╕реАрдПрд▓ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬреНрдпрд╛рдорд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдирд╣реАрдВ рдирд┐рдкрдЯреЗрдВрдЧреЗред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рдг рд╣реИ рдпрд╛ рдирд╣реАрдВ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рд╣реИ, рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛), рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐ рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдпрд░рд┐рдпрд░ рд╣реЛрдЧрд╛ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░реАрдЯреАрдпрд░) = рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ) рдПрдХ рддрдереНрдп рд╣реИред
рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрдп-рдСрдлрд╕реЗрдЯ рдЬреЛ рдЧреБрдард▓реА рдХреЛ NDRange рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреЗ рд╣реИрдВ
рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдерд╛ред рд╣рд╛рдВ, рдФрд░ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдпрд╣ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред
рдПрдХ рдмрдлрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ 1 рдбреА, 2 рдбреА рдпрд╛ 3 рдбреА рдЖрдпрддрд╛рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкрдврд╝реЗрдВ, рд▓рд┐рдЦреЗрдВ рдФрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдлрд╝рдВрдХреНрд╢рди
clEnqueueReadBufferRect, clEnqueueWriteBufferRect рдФрд░ clEnqueueCopyBufferRect рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВ , рдЬреЛ рдЖрдкрдХреЛ рдмрдлрд░ рдХреЗ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╛рдиреА рдпрджрд┐ рдЖрдк рд▓рд╛рдЗрди рдореЗрдВ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдпрд╛ рдЫрд╡рд┐ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ (рд▓рд╛рдЗрди рдХреЗ рд╕рдорд╛рди рдореИрдЯреНрд░рд┐рдХреНрд╕) рддреЛ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛, рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдмрдлрд░ рдХреЛ рдкрдврд╝рдиреЗ / рдХреЙрдкреА рдХрд░рдиреЗ рдпрд╛ рдПрдХ рдХрдорд╛рдВрдб рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХреЗрд╡рд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдУрдкрдирд╕реАрдПрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдЦреБрдж рдХрд░реЗрдВрдЧреЗред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдХрднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрдбрд╝реЗ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдорд┐рд░рд░ рд░рд┐рдкреАрдЯ рдПрдбреНрд░реЗрд╕рд┐рдВрдЧ
рдпрджрд┐ рдЖрдк рдЫрд╡рд┐ рдХреЛ рдмрдирд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
CLK_ADDRESS_MIRRORED_REPEAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЬрдм рдЖрдк рдмрдирд╛рд╡рдЯ рдХреА рд╕реАрдорд╛ рд╕реЗ рдЖрдЧреЗ
рдмрдврд╝реЗрдВ , рддреЛ рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ, рдЬреИрд╕реЗ рдХрд┐ рдЙрд╕рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдерд╛ред рдФрд░ рдпрд╣ рдЬрд┐рддрдиреА рдмрд╛рд░ рдЪрд╛рд╣реЗ рдЙрддрдиреА рдмрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓рдЧрддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рднреА рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рд╡рд░реНрдзрди рдФрд░ рд╕реБрдзрд╛рд░
ClGetKernelWorkGroupInfo рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП
CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕рдореВрд╣ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЧреБрдгрдХ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рдпрд╣ рдмрд╛рдд рд╣рдорд╛рд░реЗ рд▓рд┐рдП рддрд╛рдирд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧреА (рддрд╛рдХрд┐ рд╕рдореВрд╣ рдЖрдХрд╛рд░ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХрдИ рдкреВрд░реЗ рдпреБрджреНрдз рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ) рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдСрдЯреЛ-рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред
CL_CONTEXT_NUM_DEVICES clGetContextInfo рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рд╣рдореЗрдВ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдХрд┐рддрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИрдВред
OpenCL рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИ рдореИрдХреНрд░реЛрдЬрд╝
CL_VERSION_1_0 рдФрд░ CL_VERSION_1_1рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛:
cl_khr_byte_addressable_store
cl_khr_global_int32_base_atomics,
cl_khr_global_int32_extended_atomics,
cl_khr_local_int32_base_atomics,
cl_khr_local_int32_extended_atomics ред
рдФрд░ рдирд┐рд░реНрдорд┐рдд рдкрд░рдорд╛рдгреБ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ рдХреЛ
рдкрд░рдорд╛рдгреБ_ рд╕реЗ
рдкрд░рдорд╛рдгреБ_ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
2 рдирдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ:
cl_khr_gl_event рдФрд░ cl_khr_d3d10_sharing ред
рдХрдИ рдирдП рдЖрджреЗрд╢ рднреА рджрд┐рдЦрд╛рдИ рджрд┐рдП:
get_global_offset,
minmag,
maxmag,
async_work_group_strided_copy,
vec_step,
рдлреЗрд░рдмрджрд▓,
shuffle2редрдореИрдВ рд╕рднреА рдЕрдкрдбреЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рд╕реВрдЪреА рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗрдЧреАред
рдкреБрдирд╢реНрдЪ: рдлрд┐рд░ рд╕реЗ, рдореЗрд░реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдВрдЧреЗ :)
PS2:
рдУрдкрдирд╕реАрдПрд▓ рдХреА рдореЗрд░реА рдЖрдЦрд┐рд░реА рдкреЛрд╕реНрдЯ рдореЗрдВ
: рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдФрд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдпрд╛ рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ? рдЙрдиреНрд╣реЛрдВрдиреЗ OpenCL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЖрдЬ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрдХ рдХрд┐рддрд╛рдм
"OpenCL рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд╛рдЗрдб" рд╕рд┐рд░реНрдл рдПрдХ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдИ рдереАред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣рд╛ рд╣реИред