Wpis z mikrobloga

.NET Core 3.0 pozwoli na bezpośrednie wykonywanie operacji przy użyciu wewnętrznych instrukcji procesora dostępnych w zależności od platformy np. na x86:

SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, FMA, LZCNT, POPCNT, BMI1, BMI2, PCLMULQDQ, AES
Przykład kodu:

using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;

static unsafe float[] SimdAdd(float[] a, float[] b, int n)
{
float[] result = new float[n];
fixed(float* ptr_a = a, ptr_b = b, ptr_res = result)
{
for (int i = 0; i < n; i += Vector256.Count)
{
Vector256 v1 = Avx.LoadVector256(ptr_a + i);
Vector256 v2 = Avx.LoadVector256(ptr_b + i);
Vector256 res = Avx.Add(v1, v2);
Avx.Store(ptr_res + i, res);
}
}
return result;
}

Więcej tutaj

#dotnet #dotnetcore #csharp #programowanie
  • 9
  • Odpowiedz
@Hektorrr: To dam plusa ( ͡° ͜ʖ ͡°)
Mam plany się przebranżowić, tzn wrócić na dobre do c#. Jesteś w stanie polecić jakieś materiały z .net core (oprócz docs.microsoft :P) ?
Web zawsze mi sprawiał problemy, a z tym kojarzę VS code i .net core.

  • Odpowiedz
@Luntri: Oprócz docsów to blogi dotnetowych sław, źródła na githubie, materiały od @spetz zwłaszcza serię o mikroserwisach.
Ale głównie to docsy i github.
Nie będziesz miał raczej większego problemu bo .NET Core jest bardzo podobny do .NET.
Ale głównie póki co używany jest w back-endzie więc zdecydowanie polecam zacząć od poznania ASP.NET Core 2.2/3.0(preview).
  • Odpowiedz