Presentation is loading. Please wait.

Presentation is loading. Please wait.

Core.NET Next gen JIT (“RyuJIT”) SIMD Runtime Compilers.NET Compiler Platform (“Roslyn”) Languages innovation Windows Desktop Azure and Windows Server.

Similar presentations


Presentation on theme: "Core.NET Next gen JIT (“RyuJIT”) SIMD Runtime Compilers.NET Compiler Platform (“Roslyn”) Languages innovation Windows Desktop Azure and Windows Server."— Presentation transcript:

1

2

3 Core.NET Next gen JIT (“RyuJIT”) SIMD Runtime Compilers.NET Compiler Platform (“Roslyn”) Languages innovation Windows Desktop Azure and Windows Server Universal Windows apps.NET Native ASP.NET updates Windows Convergence Native compilation Cross-devices Xamarin partnership Web apps.NET support for Azure Mobile Services Cloud Services Openness Windows Store iOS and Android.NET in devices and services

4 .NET 4.5.1 is now installed on 500+ million PCs!

5

6 ScenarioImprovement (%) Cold Startup39.32% Warm Startup31.21% Memory Usage12.68% Wordament on.NET Native:

7 Available for x64, ARM (x86 is coming) V1 is targeted at Store apps

8

9 1. Enable 2. Debug/test app

10

11

12 public void NbodyCPUKernel_Vect(Particle[] A, ref Particle B, long numBodies) { Float_4 acc; acc.x = 0; acc.y = 0; acc.z = 0; acc.w = 0; // This loop is hot for (long j = 0; j < numBodies; j++) { Float_4 r; r.x = A[j].pos.x - B.pos.x; r.y = A[j].pos.y - B.pos.y; r.z = A[j].pos.z - B.pos.z; float distSqr = r.x * r.x + r.y * r.y + r.z * r.z; distSqr += softeningSquared; float invDist = 1.0f / (float)Math1.Sqrt(distSqr); float invDistCube = invDist * invDist * invDist; float s = fParticleMass * invDistCube; acc.x += r.x * s; acc.y += r.y * s; acc.z += r.z * s; } B.vel.x += acc.x * deltaTime; B.vel.y += acc.y * deltaTime; B.vel.z += acc.z * deltaTime; B.vel.x *= dampening; B.vel.y *= dampening; B.vel.z *= dampening; B.pos.x += B.vel.x * deltaTime; B.pos.y += B.vel.y * deltaTime; B.pos.z += B.vel.z * deltaTime; } for (long j = 0; j < numBodies; j++) { Float_4 r; r.x = A[j].pos.x - B.pos.x; r.y = A[j].pos.y - B.pos.y; r.z = A[j].pos.z - B.pos.z; float distSqr = r.x * r.x + r.y * r.y + r.z * r.z; distSqr += softeningSquared; float invDist = 1.0f / (float)Math1.Sqrt(distSqr); float invDistCube = invDist * invDist * invDist; float s = fParticleMass * invDistCube; acc.x += r.x * s; acc.y += r.y * s; acc.z += r.z * s; }

13 http://msdn.com/dotnetn ative.NET Native FAQ.NET Native Deep Dive talk

14 MSIL bytecode Machine code

15 Brand new just-in-time (JIT) compiler for.NET Significant application startup improvement

16

17

18 Learn more about RyuJIT Download RyuJITHelp us make RyuJIT better RyuJIT CTP1: The next-generation JIT compiler for.NET RyuJIT CTP2: Getting Ready for Prime-time http://aka.ms/RyuJIT

19

20

21

22

23

24 Support SSE2, AVX and other vector instructions in.NET. For AVX, an app can scale up 8X on a processor supporting AVX. For SSE2, an app can scale up 4X on a processor supporting SSE. Developer preview available as part of RyuJIT CTP3.

25 public struct Vector where T : struct { public Vector(T value); public Vector(T[] values); public Vector(T[] values, int index); public static int Length { get; } public T this[int index] { get; } // With SIMD, these element wise operations are done in parallel: public static Vector operator +(Vector left, Vector right); public static Vector operator *(Vector left, Vector right); //... } Length is fixed, but hardware dependent

26 float[] values = GetValues(); float increment = GetIncrement(); float[] result = new float[values.Length] // Perform addition as manual loop: for (int i = 0; i < values.Length; i++) { values[i] += increment; } Vector values = GetValues(); Vector increment = GetIncrement(); // Perform addition as vector operation: Vector result = values + increment; Unvectorized code adds one value at a time. Using Vector you can add multiple values simultaneously.

27

28

29

30

31 CommunicationSource codeCross-platform

32 OwnerPackagesDownloads Microsoft92658M A great way to add core functionality to your app We maintain a curated list of supported packages

33 Positio n PackageDownloads

34 .NET API for Hadoop WebClient.NET Compiler Platform ("Roslyn").NET Map Reduce API for Hadoop.NET Micro Framework ASP.NET MVC ASP.NET Web API ASP.NET Web Pages ASP.NET SignalR Composition (MEF2) Entity Framework Linq to Hive MEF (Managed Extensibility Framework) OWIN Authentication Middleware Rx (Reactive Extensions) Web Protection Library Windows Azure.NET SDK Windows Phone Toolkit WnsRecipe Mimekit Xamarin.Auth Xamarin.Mobile Couchbase for.NET Miguel de Icaza (Xamarin) Laurent Bugnion (IdentityMine) Niels Hartvig (Umbraco) Anthony van der Hoorn (Glimpse) Paul Betts (GitHub) Nigel Sampson (Compiled Experience) Mailkit System.Drawing

35

36 .NET Native ARM & X64 available today (Developer Preview) X86 coming Auto- vectorization coming Exploring additional scenarios based on customer feedback Next gen. JIT X64 available today (DP) Support for additional architectures coming SIMD Support for SSE2 available today (DP) AVX support coming Cross- platform Partnership with Xamarin X-plat portable class libraries.NET ecosystem.NET Foundation One Class Library NuGet as the delivery mechanism Call To Action: Please try out the Developer Preview and give us feedback.

37

38 @dotnet dotnetBlogE-mail UserVoiceMSDN Forums

39

40

41


Download ppt "Core.NET Next gen JIT (“RyuJIT”) SIMD Runtime Compilers.NET Compiler Platform (“Roslyn”) Languages innovation Windows Desktop Azure and Windows Server."

Similar presentations


Ads by Google