C# 在dotnet core中禁用特定单元测试的SIMD指令集

C# 在dotnet core中禁用特定单元测试的SIMD指令集,c#,unit-testing,.net-core,mstest,simd,C#,Unit Testing,.net Core,Mstest,Simd,我想知道是否有可能在dotnet core C#test项目(MSTest)中模拟用于特定单元测试的SIMD指令集 是否可以按照建议以某种方式使用Intel Intrinsics Emulator 例如: 使用Avx2.IsSupported=true运行测试一次,使用Avx2…=错误,Ssse3…=true和一次,两个都设置为false [TestMethod] public void Test_Reverse() { var buffer = ...; var bufferCopy

我想知道是否有可能在dotnet core C#test项目(MSTest)中模拟用于特定单元测试的SIMD指令集

是否可以按照建议以某种方式使用Intel Intrinsics Emulator

例如: 使用
Avx2.IsSupported=true运行测试一次,使用
Avx2…=错误,Ssse3…=true
和一次,两个都设置为
false


[TestMethod]
public void Test_Reverse()
{
  var buffer = ...;
  var bufferCopy = ...;

  SIMDHelper.Reverse(buffer);

  AssertReversed...
}


我假设你可以在英特尔的SDE下运行.NET程序;你有没有试过或者用谷歌搜索过?对于一个“正常”的可执行文件,这正是你可以用SDE做的事情。我刚刚发现了英特尔SDE的存在。我将检查它,但仅仅将运行时标志设置为false似乎过于复杂(我可以在支持所有内部函数的机器上运行测试)。我想这就是您要问的问题,因为您链接问题的一个答案就是这个。您不模拟内部函数(在编译时),而是模拟一个CPU,该CPU的支持程度大于或小于本机CPU的支持程度。这甚至不是“仅仅”挂接CPUID以报告支持的不同扩展,它实际上确保AVX指令会出错,例如。因此,是的,这需要所有的动态重新编译的复杂性才能有效地做到这一点,并以接近本机速度运行主机CPU支持的代码;你有没有试过或者用谷歌搜索过?对于一个“正常”的可执行文件,这正是你可以用SDE做的事情。我刚刚发现了英特尔SDE的存在。我将检查它,但仅仅将运行时标志设置为false似乎过于复杂(我可以在支持所有内部函数的机器上运行测试)。我想这就是您要问的问题,因为您链接问题的一个答案就是这个。您不模拟内部函数(在编译时),而是模拟一个CPU,该CPU的支持程度大于或小于本机CPU的支持程度。这甚至不是“仅仅”挂接CPUID以报告支持的不同扩展,它实际上确保AVX指令会出错,例如。因此,是的,这需要所有的动态重新编译的复杂性来有效地做到这一点,并以接近本机速度运行由主机CPU支持的代码。