System.Numerics.Vector<T>
'u kullanan bazı C# kodlarını çalıştırıyorum ancak SIMD intrinsics'in tam anlamıyla faydalanamayacağımı söyleyebilirim. Güncelleştirme 1 ile Visual Studio Topluluğu 2015 kullanıyorum ve clrjit.dll v4.6.1063.1 olduğunu.RyuJIT, SIMD intrinsics'ini tam olarak kullanmıyor
AVX komut seti uzantılarını uygulayan bir Intel Core i5-3337U Processor üzerinde çalışıyorum. Bu nedenle, bir SIM kartın çoğunu 256 bitlik bir kayıt üzerinde çalıştırabileceğimi düşünüyorum. Örneğin, sökme işlemi vmovups
, vmovupd
, vaddups
, vb ... ve Vector<float>.Count
8, Vector<double>.Count
4 olmalıdır, vb. Gibi yönergeleri içermelidir ... Ama görmediğim şey bu değil.
WriteLine($"{Vector<byte>.Count} bytes per operation");
WriteLine($"{Vector<float>.Count} floats per operation");
WriteLine($"{Vector<int>.Count} ints per operation");
WriteLine($"{Vector<double>.Count} doubles per operation");
üretir:
yerine benim sökme movups
, movupd
, addups
, vb ... ve şu kodu gibi talimatlar içeren
16 bytes per operation
4 floats per operation
4 ints per operation
2 doubles per operation
Nerede yanlış gidiyorum? Tüm proje ayarlarını vb. Görmek için proje here kullanılabilir.
RyuJIT, GitHub'da açık kaynak koduna bakıp doğrudan geliştiricilerle tartışabilirsiniz. –