рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдбреЗрд╡рд▓рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ , рд╕реА ++ рдПрдПрдордкреА рдЖрдкрдХреЛ рдПрдХ GPU рдЬреИрд╕реЗ рд╡рд┐рд╖рдо рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк .NET рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ, рддреЛ рднреА рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ C ++ AMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб C # рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ, рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрдиреБрднрд╛рдЧ C ++ AMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ GPU рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рдЗрдВрдЯрд░реЛрдк рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреЛрд╕реНрдЯ рдкреА / рдЗрдирд╡реЛрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдПрдЧреАред
рд╣рд╛рд▓рд╛рдБрдХрд┐, C # рд╕реЗ C ++ AMP рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ C ++ AMP рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбреИрдирд┐рдпрд▓ рдореЛрде рджреНрд╡рд╛рд░рд╛ рд╕реА ++ рдПрдПрдордкреА рдХреЗ рд╕рд╛рде
рд╡реАрдПрд╕ 11 рдбреЗрд╡рд▓рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реА ++ рдПрдПрдордкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдЕрд▓реНрдЯреАрдореЗрдЯ рджреЛрдиреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╢реЙрд░реНрдЯ рдХрдЯ
рдЬреИрд╕реЗ рд╣реА рд╕реА ++ рдПрдПрдордкреА рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдЕрд▓реНрдЯреАрдореЗрдЯ рдореЗрдВ рдПрдХ
рдирдореВрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓рдирд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред
рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк C ++ AMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рдЖрдк рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
- рдЪрд░рдг 1: Visual Studio 11 рдореЗрдВ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдпрд╛ рдмрдирд╛рдПрдВред
- X86 рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдХреНрд╖реНрдп рдордВрдЪ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рдпрджрд┐ рдЖрдк 32-рдмрд┐рдЯ C ++ AMP рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ)ред
- рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред
- рдЪрд░рдг 2: рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВред
- рдПрдХ Win32 DLL рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ C ++ AMP рдХреЛрдб рд╣реЛрдЧрд╛ред
- рдЪрд░рдг 3: Win32 DLL рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВред
- рдЪрд░рдг 4: рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВред
- рдЪрд░рдг 5: рд╣рдо C ++ AMP рдФрд░ C # рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред
- C # рдХреЛрдб C ++ AMP рдХреЛрдб рдХреЗ рд▓рд┐рдП P / invoke рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рддреЛ, рдЪрд▓реЛ рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рдЪрд░рдг 1: Visual Studio 11 рдореЗрдВ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдпрд╛ рдмрдирд╛рдПрдБ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓рдиреЗ рдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рдХреА рд▓реЛрдЧ рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдирд╛рдо HelloWorldCSharp рд╣реИ, рдФрд░ рдпрд╣ рд╡рд┐рдЬрд╝реБрдЕрд▓ C # рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдЕрд▓реНрдЯреАрдореЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдореЗрдЯреНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:
- рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ C ++ AMP рдХреЛрдб 32-рдмрд┐рдЯ рд╣реЛрдЧрд╛, рд▓рдХреНрд╖реНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ X86 рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ AnyCPU рдирд╣реАрдВред
- рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб (рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдХрд░реНрддрд╛ рдореЗрдВ HelloWorldCSharp рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдмрд┐рд▓реНрдб рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, "рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ") рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЪрд░рдг 2: рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВ
рд╣рдореЗрдВ C ++ AMP рдХреЛрдб рд╡рд╛рд▓реЗ Win32 DLL рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдПрдХ "Win32 рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ "HelloWorldLib" рдирд╛рдо рджреЗрдВрдЧреЗ:
рдЕрдЧрд▓рд╛ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, "DLL" рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡реЗрджрди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЪреБрдиреЗрдВ:
рдЪрд░рдг 3: Win32 DLL рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ
рд╕рдорд╛рдзрд╛рди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рджреЛрдиреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рд╕рд╛рде рд╣реЛрдВ, рд╣реИ рдирд╛? рд╣рд╛рд▓рд╛рдБрдХрд┐, HelloWorldLib.dll рдХреЛ HelloWorldCSharp рдмрд╛рдпрдиреЗрд░реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ HelloWorldCSharp.exe рд░рдирдЯрд╛рдЗрдо рдкрд░ рдорд┐рд▓ рд╕рдХреЗред
HelloWorldLib.dll рдХреЛ рд╣рд░ рдмрд╛рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ HelloWorldCSbp рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдк рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЙрд▓реНрдпреВрд╢рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ HelloWorldCSharp рдХреЛ рдЕрдирд▓реЛрдб рдХрд░реЗрдВ:
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Visual Studio рдореЗрдВ HelloWorldCSharp.csproj рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, "HelloWorldSharp.csproj" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ):
"Microsoft.CSharp.targets" рдЕрдиреБрднрд╛рдЧ рдХреЗ рдареАрдХ рд╕рд╛рдордиреЗ рдирд┐рдореНрди XML рдЪрд┐рдкрдХрд╛рдПрдБ:
<ItemGroup> <Content Include="..\$(Configuration)\HelloWorldLib.dll"> <Link>HelloWorldLib.dll</Link> </Content> </ItemGroup>
HelloWorldLib рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, HelloWorldLib.dll рд╕реЛрд▓реНрдпреВрд╢рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ "рдХреЙрдкреА рдЯреВ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА" рдХреЛ "рдпрджрд┐ рдирдпрд╛ рд╣реИ рддреЛ рдХреЙрдкреА рдХрд░реЗрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ "рдмрд┐рд▓реНрдб рдПрдХреНрд╢рди" рднреА "рдХрдВрдЯреЗрдВрдЯ" рдкрд░ рд╕реЗрдЯ рд╣реИ:
рдЪрд░рдг 4: рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ
рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо HelloWorldCSib рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ HelloWorldLib рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, HelloWorldCSharp рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЕрд╕реЗрдВрдмрд▓реА рднреА рд╣реЛрдЧреА рдФрд░ HelloWorldLibред
HelloWorldCSharp рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЪреБрдиреЗрдВ:
рдФрд░ рдлрд┐рд░ HelloWorldLib рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ:
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдорд╛рдзрд╛рди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж HelloWorldCSharp рдмрд╛рдпрдиреЗрд░реА рдлрд╝реЛрд▓реНрдбрд░ (рдпрд╛рдиреА, HelloWorldCSharp \ HelloWorldCSharp \ bin \ Debug) рдХреЛ HelloWorldCSharp.exe рдФрд░ HelloWorldLib.dll рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪрд░рдг 5: C ++ AMP рдФрд░ C # рдХреЛрдб рд▓рд┐рдЦрдирд╛
рдЕрдм рд╣рдо C # рд╕реЗ C ++ AMP рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ HelloWorldLib.cpp рдмрджрд▓реЗрдВ:
#include "stdafx.h" #include "amp.h" using namespace concurrency; extern "C" __declspec ( dllexport ) void _stdcall square_array(float* arr, int n) {
рд╣рдордиреЗ рд╕рд┐рд░реНрдл square_array рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЬреЛ C ++ AMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд░реНрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЗрд╕реЗ DLL рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдм, C ++ AMP рдХреЛрдб рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HelloWorldCSharp рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ HelloWorldCSharp рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Program.cs рдмрджрд▓реЗрдВ:
using System; using System.Runtime.InteropServices; class Program {
... рдмрд╕ рдЗрддрдирд╛ рд╣реА! рдЕрдм рдЖрдк HelloWorldCSharp рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ C # рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ C ++ AMP рдХреЛрдб рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ C # рд╕реЗ C ++ AMP рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд "рднреЛрд▓рд╛" рд╣реИ - рдпрд╣ GPU рдХреЗ рддреНрд╡рд░рдг рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдкрд░ рдмрд╣реБрдд рдХрдо рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛ рдкрдж
рдХреЗ рд▓рд┐рдП C ++ AMP рдХреЛрдб рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╕рдордп рддреНрд╡рд░рдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ
C ++ AMP рдХреЗ рдЕрд▓рд╛рд╡рд╛, Microsoft (рдЗрд╕рдХрд╛ рдЕрдиреБрд╕рдВрдзрд╛рди рдкреНрд░рднрд╛рдЧ) -
рдПрдХреНрд╕реЗрд▓реЗрд░реЗрдЯрд░ рд╕реЗ рдПрдХ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЛ рдорд▓реНрдЯреА-рдХреЛрд░ рд╕реАрдкреАрдпреВ рдФрд░ рдЬреАрдкреАрдпреВ рджреЛрдиреЛрдВ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 9 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред
рддреНрд╡рд░рдХ v2 рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рджреЗрд╢реА C ++ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред