Loading...
Loading...
Compare original and translation side by side
| Input | Required | What to establish |
|---|---|---|
| Scalar implementation and tests | Yes | Existing contract, representative call sites, and supported overlap |
| Target frameworks and platforms | Yes | Available SIMD APIs and architectures that must behave consistently |
| Build and test workflow | Yes | The repository's normal commands and how to launch separate test processes |
| Representative workload or benchmark | For optimization | Typical input sizes and the baseline to beat |
| 输入项 | 是否必填 | 需要确认的内容 |
|---|---|---|
| 标量实现与测试用例 | 是 | 现有契约、代表性调用场景以及支持的内存重叠情况 |
| 目标框架与平台 | 是 | 可用的SIMD API以及必须保持行为一致的架构 |
| 构建与测试工作流 | 是 | 仓库的常规命令以及如何启动独立测试进程 |
| 代表性工作负载或基准测试 | 优化时需要 | 典型输入大小以及需要超越的基准性能 |
Span<T>stringTensorPrimitivesSumMinMaxAverageSystem.NumericsVector128<T>(vector & mask) == Vector128<byte>.ZeroptestIsSupportedIsHardwareAcceleratedIsSupportedCountSpan<T>stringTensorPrimitivesSumMinMaxAverageSystem.NumericsVector128<T>(vector & mask) == Vector128<byte>.ZeroptestIsSupportedIsHardwareAcceleratedIsSupportedCountVector128<T>Vector512<T>Vector256<T>Vector<T>Vector128<T>IsHardwareAcceleratedIsSupportedCountVector128.Create(span)CopyToLoadUnsafe(ref T, nuint)StoreUnsafeMemoryMarshal.GetReference(span)MemoryMarshal.GetArrayDataReference(array)0charboolMemoryMarshal.CastAs<TFrom, TTo>01Countnuint0Count - 1CountCount + 1ConditionalSelectNativeEstimateVector128<T>TransformSpan<int> tail = data.Slice(data.Length - Vector128<int>.Count);
Vector128<int> end = Vector128.Create<int>(tail);
Span<int> remaining = data;
while (remaining.Length >= Vector128<int>.Count)
{
Vector128<int> values = Vector128.Create<int>(remaining);
Transform(values).CopyTo(remaining);
remaining = remaining.Slice(Vector128<int>.Count);
}
if (!remaining.IsEmpty)
{
Transform(end).CopyTo(tail);
}endConditionalSelectLoadUnsafeStoreUnsafeVector128<T>Vector512<T>Vector256<T>Vector<T>Vector128<T>IsHardwareAcceleratedIsSupportedCountVector128.Create(span)CopyToLoadUnsafe(ref T, nuint)StoreUnsafeMemoryMarshal.GetReference(span)MemoryMarshal.GetArrayDataReference(array)0charboolMemoryMarshal.CastAs<TFrom, TTo>01Countnuint0Count - 1CountCount + 1ConditionalSelectNativeEstimateVector128<T>TransformSpan<int> tail = data.Slice(data.Length - Vector128<int>.Count);
Vector128<int> end = Vector128.Create<int>(tail);
Span<int> remaining = data;
while (remaining.Length >= Vector128<int>.Count)
{
Vector128<int> values = Vector128.Create<int>(remaining);
Transform(values).CopyTo(remaining);
remaining = remaining.Slice(Vector128<int>.Count);
}
if (!remaining.IsEmpty)
{
Transform(end).CopyTo(tail);
}endConditionalSelectLoadUnsafeStoreUnsafeDOTNET_EnableAVX2=0DOTNET_EnableHWIntrinsic=0DOTNET_EnableAVX2=0DOTNET_EnableHWIntrinsic=0Vector128<T>Vector128<T>