C ++ AMP рдХреЛ C # рд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 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 # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдпрд╛ рдмрдирд╛рдПрдБ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓рдиреЗ рдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рдХреА рд▓реЛрдЧ рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдирд╛рдо HelloWorldCSharp рд╣реИ, рдФрд░ рдпрд╣ рд╡рд┐рдЬрд╝реБрдЕрд▓ C # рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдЕрд▓реНрдЯреАрдореЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 11 рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдореЗрдЯреНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:

рдЪрд░рдг 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) { // Create a view over the data on the CPU array_view<float,1> dataView(n, &arr[0]); // Run code on the GPU parallel_for_each(dataView.grid, [=] (index<1> idx) mutable restrict(direct3d) { dataView[idx] = dataView[idx] * dataView[idx]; }); // Copy data from GPU to CPU dataView.synchronize(); } 

рд╣рдордиреЗ рд╕рд┐рд░реНрдл square_array рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЬреЛ C ++ AMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд░реНрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЗрд╕реЗ DLL рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдм, C ++ AMP рдХреЛрдб рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HelloWorldCSharp рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ HelloWorldCSharp рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Program.cs рдмрджрд▓реЗрдВ:

 using System; using System.Runtime.InteropServices; class Program { /// <summary> /// Function defined in HelloWorldLib.dll to square an array using C++ AMP /// </summary> [DllImport("HelloWorldLib", CallingConvention = CallingConvention.StdCall)] extern unsafe static void square_array(float* array, int length); static unsafe void Main() { // Allocate an array float[] arr = new[] { 1.0f, 2.0f, 3.0f, 4.0f }; // Square the array elements using C++ AMP fixed (float* arrPt = &arr[0]) { square_array(arrPt, arr.Length); } // Enumerate the results foreach (var x in arr) { Console.WriteLine(x); } } } 

... рдмрд╕ рдЗрддрдирд╛ рд╣реА! рдЕрдм рдЖрдк HelloWorldCSharp рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ C # рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ C ++ AMP рдХреЛрдб рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ C # рд╕реЗ C ++ AMP рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд "рднреЛрд▓рд╛" рд╣реИ - рдпрд╣ GPU рдХреЗ рддреНрд╡рд░рдг рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдкрд░ рдмрд╣реБрдд рдХрдо рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛ рдкрдж рдХреЗ рд▓рд┐рдП C ++ AMP рдХреЛрдб рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╕рдордп рддреНрд╡рд░рдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ

C ++ AMP рдХреЗ рдЕрд▓рд╛рд╡рд╛, Microsoft (рдЗрд╕рдХрд╛ рдЕрдиреБрд╕рдВрдзрд╛рди рдкреНрд░рднрд╛рдЧ) - рдПрдХреНрд╕реЗрд▓реЗрд░реЗрдЯрд░ рд╕реЗ рдПрдХ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЛ рдорд▓реНрдЯреА-рдХреЛрд░ рд╕реАрдкреАрдпреВ рдФрд░ рдЬреАрдкреАрдпреВ рджреЛрдиреЛрдВ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 9 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред
рддреНрд╡рд░рдХ v2 рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рджреЗрд╢реА C ++ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

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


All Articles