diff --git a/DvlErrLog.txt b/DvlErrLog.txt deleted file mode 100644 index ca08bb4f..00000000 --- a/DvlErrLog.txt +++ /dev/null @@ -1,3 +0,0 @@ -System.Exception: Driver Verification Log needs to be created on a 'Release' configuration. The current selected configuration is ''. - 在 Microsoft.SdvMenuCommand.DriverVerificationLicense..ctor() - 在 Microsoft.SdvMenuCommand.SdvMenuCommandPackage.StaticToolsLogoMenuItemCallback(Object sender, EventArgs e) diff --git a/StgSharp.Common/HighPerformance/MatrixKernel.cs b/StgSharp.Common/HighPerformance/MatrixKernel.cs index edc688b2..d47d2b68 100644 --- a/StgSharp.Common/HighPerformance/MatrixKernel.cs +++ b/StgSharp.Common/HighPerformance/MatrixKernel.cs @@ -42,7 +42,7 @@ using System.Threading.Tasks; namespace StgSharp.HighPerformance { [StructLayout(LayoutKind.Explicit, Size = 64)] - public unsafe struct MatrixKernel + public unsafe struct MatrixKernel where T: unmanaged, INumber { [FieldOffset(0)] internal fixed byte Buffer[64]; @@ -68,11 +68,11 @@ namespace StgSharp.HighPerformance } } - public static MatrixKernel Fp32Unit + public static MatrixKernel Unit { get { - MatrixKernel kernel = new(true); + MatrixKernel kernel = new(true); kernel.FP32Buffer[0] = 1f; kernel.FP32Buffer[3] = 1f; kernel.FP32Buffer[8] = 1f; @@ -81,7 +81,7 @@ namespace StgSharp.HighPerformance } } - public ref T UnsafeIndex(int column, int row) where T: unmanaged, INumber + public ref T UnsafeIndex(int column, int row) { ref M128 col = ref Unsafe.As(ref Buffer[0]); col = ref Unsafe.Add(ref col, column); diff --git a/StgSharp.Common/Mathematics/Linear/KernelParallel.cs b/StgSharp.Common/Mathematics/Linear/KernelParallel.cs deleted file mode 100644 index 598f3dcb..00000000 --- a/StgSharp.Common/Mathematics/Linear/KernelParallel.cs +++ /dev/null @@ -1,40 +0,0 @@ -//----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -// file="KernelParallel.cs" -// Project: StgSharp -// AuthorGroup: Nitload Space -// Copyright (c) Nitload Space. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the “Software”), to deal in the Software without restriction, -// including without limitation the rights to use, copy, modify, merge, -// publish, distribute, sublicense, and/or sell copies of the Software, -// and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and -// this permission notice shall be included in all copies -// or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED “AS IS”, -// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -// ARISING FROM, OUT OF OR IN CONNECTION WITH -// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// ----------------------------------------------------------------------- -// ----------------------------------------------------------------------- -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace StgSharp.Mathematics -{ - internal class KernelParallel { } -} diff --git a/StgSharp.Common/Mathematics/Linear/Matrix.cs b/StgSharp.Common/Mathematics/Linear/Matrix.cs index 87147455..a6ee7c85 100644 --- a/StgSharp.Common/Mathematics/Linear/Matrix.cs +++ b/StgSharp.Common/Mathematics/Linear/Matrix.cs @@ -80,7 +80,7 @@ namespace StgSharp.Mathematics public static MatrixAllocation DefaultAllocation { get; set; } = MatrixAllocation.GC; - internal abstract MatrixKernel* Buffer { get; } + internal abstract MatrixKernel* Buffer { get; } protected internal int KernelColumnLength { get; init; } @@ -108,14 +108,14 @@ namespace StgSharp.Mathematics } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public abstract MatrixSegmentEnumeration GetColumnEnumeration(); + public abstract MatrixSegmentEnumeration GetColumnEnumeration(); - public abstract ref MatrixKernel GetMatrixKernel(int column, int row); + public abstract ref MatrixKernel GetMatrixKernel(int column, int row); - public abstract MatrixSegmentEnumeration GetRowEnumeration(); + public abstract MatrixSegmentEnumeration GetRowEnumeration(); [MethodImpl(MethodImplOptions.AggressiveInlining)] - public abstract MatrixSegmentEnumeration GetSequentialEnumeration(); + public abstract MatrixSegmentEnumeration GetSequentialEnumeration(); [Obsolete("This method does not contain boarder check, so be careful on size or use indexer instead.", false)] public abstract ref T UnsafeIndex(int column, int row); @@ -133,36 +133,37 @@ namespace StgSharp.Mathematics } - public readonly unsafe ref struct MatrixSegmentEnumeration( - MatrixKernel* source, + public readonly unsafe ref struct MatrixSegmentEnumeration( + MatrixKernel* source, int stride, int size, int secondaryStride, int secondarySize) + where T: unmanaged, INumber { - private readonly MatrixKernel* _source = source; + private readonly MatrixKernel* _source = source; private readonly int _secondarySize = secondarySize; private readonly int _secondaryStride = secondaryStride; private readonly int _size = size; private readonly int _stride = stride; - public Enumerator GetEnumerator() + public Enumerator GetEnumerator() { - return new Enumerator(in this); + return new Enumerator(in this); } - public ref struct Enumerator(in MatrixSegmentEnumeration enumeration) + public ref struct Enumerator(in MatrixSegmentEnumeration enumeration) where T: unmanaged, INumber { - private MatrixKernel* _current = enumeration._source - enumeration._stride; - private readonly MatrixKernel* _end = enumeration._source + enumeration._size; + private MatrixKernel* _current = enumeration._source - enumeration._stride; + private readonly MatrixKernel* _end = enumeration._source + enumeration._size; private readonly int _secondarySize = enumeration._secondarySize; private readonly int _secondaryStride = enumeration._secondaryStride; private readonly int _stride = enumeration._stride; - public readonly MatrixSegment Current + public readonly MatrixSegment Current { [MethodImpl(MethodImplOptions.AggressiveInlining)] get => new(_current, _secondarySize, _secondaryStride); @@ -178,14 +179,15 @@ namespace StgSharp.Mathematics } - public readonly unsafe ref struct MatrixSegment(MatrixKernel* source, int size, int stride) + public readonly unsafe ref struct MatrixSegment(MatrixKernel* source, int size, int stride) + where T: unmanaged, INumber { - private readonly MatrixKernel* _source = source; + private readonly MatrixKernel* _source = source; private readonly int _size = size; private readonly int _stride = stride; - public ref MatrixKernel this[int index] + public ref MatrixKernel this[int index] { get { @@ -196,18 +198,18 @@ namespace StgSharp.Mathematics } } - public Enumerator GetEnumerator() + public Enumerator GetEnumerator() { - return new Enumerator(_source, _size, _stride); + return new Enumerator(_source, _size, _stride); } - public ref struct Enumerator(MatrixKernel* source, int count, int stride) + public ref struct Enumerator(MatrixKernel* source, int count, int stride) where T: unmanaged, INumber { - private readonly MatrixKernel* _end = source + (count * stride); + private readonly MatrixKernel* _end = source + (count * stride); private readonly int _stride = stride; - public MatrixKernel* Current + public MatrixKernel* Current { [MethodImpl(MethodImplOptions.AggressiveInlining)] get; diff --git a/StgSharp.Native/StgSharp.Native.vcxproj b/StgSharp.Native/StgSharp.Native.vcxproj index c338677d..45bad145 100644 --- a/StgSharp.Native/StgSharp.Native.vcxproj +++ b/StgSharp.Native/StgSharp.Native.vcxproj @@ -179,6 +179,7 @@ + diff --git a/StgSharp.Native/StgSharp.Native.vcxproj.filters b/StgSharp.Native/StgSharp.Native.vcxproj.filters index 30e54e47..563ce522 100644 --- a/StgSharp.Native/StgSharp.Native.vcxproj.filters +++ b/StgSharp.Native/StgSharp.Native.vcxproj.filters @@ -83,6 +83,9 @@ 头文件 + + 头文件 + diff --git a/StgSharp.Native/sn-head/sn_intrinsic.h b/StgSharp.Native/sn-head/sn_intrinsic.h index b778176b..ac06c550 100644 --- a/StgSharp.Native/sn-head/sn_intrinsic.h +++ b/StgSharp.Native/sn-head/sn_intrinsic.h @@ -5,7 +5,10 @@ #ifndef SSC_INTRIN #define SSC_INTRIN +#define SSC_INTRIN_HEAD + #include "StgSharpNative.h" +#include "sn_matkernel.h" #include #include @@ -39,25 +42,6 @@ typedef union mat_kernel { float m[4][4]; } mat_kernel; -typedef union column_2 { - __m256 stream; - __m128 column[2]; - float m[4][2]; -} __2_columnset; - -typedef union column_3 { - __m256 part; - __m128 column[3]; - float m[4][3]; -} __3_columnset; - -typedef union column_4 { - __m512 stream; - __m256 half[2]; - __m128 column[4]; - float m[4][4]; -} __4_columnset; - typedef union scalar_pack { uint64_t data[8]; } scalar_pack; @@ -77,34 +61,38 @@ typedef uint64_t(SN_DECL *FACTORIALROC)(int n); INTERNAL void normalize(__m128 *source, __m128 *target); -INTERNAL void SN_DECL kernel_add_sse(mat_kernel const *left, mat_kernel const *right, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_add_avx(mat_kernel const *left, mat_kernel const *right, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_add_512(mat_kernel const *left, mat_kernel const *right, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_sub_sse(mat_kernel const *left, mat_kernel const *right, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_sub_avx(mat_kernel const *left, mat_kernel const *right, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_sub_512(mat_kernel const *left, mat_kernel const *right, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_transpose_sse(mat_kernel const *source, mat_kernel *target); -INTERNAL void SN_DECL kernel_transpose_avx(mat_kernel const *source, mat_kernel *target); -INTERNAL void SN_DECL kernel_transpose_512(mat_kernel const *source, mat_kernel *target); -INTERNAL void SN_DECL kernel_scalar_mul_sse(mat_kernel const *matrix, float const scalar, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_scalar_mul_avx(mat_kernel const *matrix, float const scalar, - mat_kernel *ans); -INTERNAL void SN_DECL kernel_scalar_mul_512(mat_kernel const *matrix, float const scalar, - mat_kernel *ans); +INTERNAL void SN_DECL f32_add_sse(MAT_KERNEL(float) const *left, MAT_KERNEL(float) const *right, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_add_avx(MAT_KERNEL(float) const *left, MAT_KERNEL(float) const *right, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_add_512(MAT_KERNEL(float) const *left, MAT_KERNEL(float) const *right, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_sub_sse(MAT_KERNEL(float) const *left, MAT_KERNEL(float) const *right, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_sub_avx(MAT_KERNEL(float) const *left, MAT_KERNEL(float) const *right, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_sub_512(MAT_KERNEL(float) const *left, MAT_KERNEL(float) const *right, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_transpose_sse(MAT_KERNEL(float) const *source, + MAT_KERNEL(float) * target); +INTERNAL void SN_DECL f32_transpose_avx(MAT_KERNEL(float) const *source, + MAT_KERNEL(float) * target); +INTERNAL void SN_DECL f32_transpose_512(MAT_KERNEL(float) const *source, + MAT_KERNEL(float) * target); +INTERNAL void SN_DECL f32_scalar_mul_sse(MAT_KERNEL(float) const *matrix, float const scalar, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_scalar_mul_avx(MAT_KERNEL(float) const *matrix, float const scalar, + MAT_KERNEL(float) * ans); +INTERNAL void SN_DECL f32_scalar_mul_512(MAT_KERNEL(float) const *matrix, float const scalar, + MAT_KERNEL(float) * ans); #pragma endregion #pragma region fma -INTERNAL void SN_DECL kernel_fma_sse(mat_kernel const *restrict left, - mat_kernel const *restrict right, mat_kernel *restrict ans); +INTERNAL void SN_DECL kernel_fma_sse(MAT_KERNEL(float) const *restrict left, + MAT_KERNEL(float) const *restrict right, + MAT_KERNEL(float) *restrict ans); #pragma endregion diff --git a/StgSharp.Native/sn-head/sn_matkernel.h b/StgSharp.Native/sn-head/sn_matkernel.h new file mode 100644 index 00000000..8f7930b2 --- /dev/null +++ b/StgSharp.Native/sn-head/sn_matkernel.h @@ -0,0 +1,19 @@ +#ifndef SN_MATKERNEL +#define SN_MATKERNEL + +#include + +#define ELEMENTSIZE(T) sizeof(T) +#define XMMCOUNT(T) sizeof(T) / 16 +#define YMMCOUNT(T) sizeof(T) / 32 +#define ZMMCOUNT(T) sizeof(T) / 64 + +#define MAT_KERNEL(T) \ + union { \ + __m128 xmm[XMMCOUNT(T)]; \ + __m256 ymm[YMMCOUNT(T)]; \ + __m512 zmm[ZMMCOUNT(T)]; \ + T m[16]; \ + } + +#endif diff --git a/StgSharp.Native/sn-src/k_basicop.c b/StgSharp.Native/sn-src/k_basicop.c index c2bef309..17f47261 100644 --- a/StgSharp.Native/sn-src/k_basicop.c +++ b/StgSharp.Native/sn-src/k_basicop.c @@ -1,6 +1,7 @@ #include "sn_intrinsic.h" -INTERNAL void SN_DECL kernel_add_sse(mat_kernel *left, mat_kernel *right, mat_kernel *ans) +INTERNAL void SN_DECL f32_add_sse(MAT_KERNEL(float) * left, MAT_KERNEL(float) * right, + MAT_KERNEL(float) * ans) { register __m128 c0 = _mm_add_ps(left->xmm[0], right->xmm[0]); register __m128 c1 = _mm_add_ps(left->xmm[1], right->xmm[1]); @@ -13,7 +14,8 @@ INTERNAL void SN_DECL kernel_add_sse(mat_kernel *left, mat_kernel *right, mat_ke ans->xmm[3] = c3; } -INTERNAL void SN_DECL kernel_add_avx(mat_kernel *left, mat_kernel *right, mat_kernel *ans) +INTERNAL void SN_DECL f32_add_avx(MAT_KERNEL(float) * left, MAT_KERNEL(float) * right, + MAT_KERNEL(float) * ans) { register __m256 c0 = _mm256_add_ps(left->ymm[0], right->ymm[0]); register __m256 c1 = _mm256_add_ps(left->ymm[1], right->ymm[1]); @@ -21,13 +23,15 @@ INTERNAL void SN_DECL kernel_add_avx(mat_kernel *left, mat_kernel *right, mat_ke ans->ymm[1] = c1; } -INTERNAL void SN_DECL kernel_add_512(mat_kernel *left, mat_kernel *right, mat_kernel *ans) +INTERNAL void SN_DECL f32_add_512(MAT_KERNEL(float) * left, MAT_KERNEL(float) * right, + MAT_KERNEL(float) * ans) { register __m512 c0 = _mm512_add_ps(left->zmm[0], right->zmm[0]); ans->zmm[0] = c0; } -INTERNAL void SN_DECL kernel_sub_sse(mat_kernel *left, mat_kernel *right, mat_kernel *ans) +INTERNAL void SN_DECL f32_sub_sse(MAT_KERNEL(float) * left, MAT_KERNEL(float) * right, + MAT_KERNEL(float) * ans) { register __m128 c0 = _mm_sub_ps(left->xmm[0], right->xmm[0]); register __m128 c1 = _mm_sub_ps(left->xmm[1], right->xmm[1]); @@ -40,7 +44,8 @@ INTERNAL void SN_DECL kernel_sub_sse(mat_kernel *left, mat_kernel *right, mat_ke ans->xmm[3] = c3; } -INTERNAL void SN_DECL kernel_sub_avx(mat_kernel *left, mat_kernel *right, mat_kernel *ans) +INTERNAL void SN_DECL f32_sub_avx(MAT_KERNEL(float) * left, MAT_KERNEL(float) * right, + MAT_KERNEL(float) * ans) { register __m256 c0 = _mm256_sub_ps(left->ymm[0], right->ymm[0]); register __m256 c1 = _mm256_sub_ps(left->ymm[1], right->ymm[1]); @@ -48,14 +53,15 @@ INTERNAL void SN_DECL kernel_sub_avx(mat_kernel *left, mat_kernel *right, mat_ke ans->ymm[1] = c1; } -INTERNAL void SN_DECL kernel_sub_512(mat_kernel *left, mat_kernel *right, mat_kernel *ans) +INTERNAL void SN_DECL f32_sub_512(MAT_KERNEL(float) * left, MAT_KERNEL(float) * right, + MAT_KERNEL(float) * ans) { register __m512 c0 = _mm512_sub_ps(left->zmm[0], right->zmm[0]); ans->zmm[0] = c0; } // Matrix transpose implementations -INTERNAL void SN_DECL kernel_transpose_sse(mat_kernel *source, mat_kernel *target) +INTERNAL void SN_DECL kernel_transpose_sse(MAT_KERNEL(float) * source, MAT_KERNEL(float) * target) { register __m128 col0 = source->xmm[0]; register __m128 col1 = source->xmm[1]; @@ -72,7 +78,7 @@ INTERNAL void SN_DECL kernel_transpose_sse(mat_kernel *source, mat_kernel *targe target->xmm[3] = _mm_movehl_ps(tmp3, tmp1); } -INTERNAL void SN_DECL kernel_transpose_avx(mat_kernel *source, mat_kernel *target) +INTERNAL void SN_DECL kernel_transpose_avx(MAT_KERNEL(float) * source, MAT_KERNEL(float) * target) { register __m256 col_low = source->ymm[0]; register __m256 col_high = source->ymm[1]; @@ -87,7 +93,7 @@ INTERNAL void SN_DECL kernel_transpose_avx(mat_kernel *source, mat_kernel *targe target->ymm[1] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(3, 1, 3, 1)); } -INTERNAL void SN_DECL kernel_transpose_512(mat_kernel *source, mat_kernel *target) +INTERNAL void SN_DECL kernel_transpose_512(MAT_KERNEL(float) * source, MAT_KERNEL(float) * target) { register __m512 matrix = source->zmm[0]; @@ -97,7 +103,8 @@ INTERNAL void SN_DECL kernel_transpose_512(mat_kernel *source, mat_kernel *targe target->zmm[0] = _mm512_permutexvar_ps(transpose_indices, matrix); } -INTERNAL void SN_DECL kernel_scalar_mul_sse(mat_kernel *matrix, float scalar, mat_kernel *ans) +INTERNAL void SN_DECL kernel_scalar_mul_sse(MAT_KERNEL(float) * matrix, float scalar, + MAT_KERNEL(float) * ans) { register __m128 temp = _mm_load_ss(&scalar); register __m128 scalar_vec = _mm_shuffle_ps(temp, temp, _MM_SHUFFLE(0, 0, 0, 0)); @@ -113,7 +120,8 @@ INTERNAL void SN_DECL kernel_scalar_mul_sse(mat_kernel *matrix, float scalar, ma ans->xmm[3] = c3; } -INTERNAL void SN_DECL kernel_scalar_mul_avx(mat_kernel *matrix, float scalar, mat_kernel *ans) +INTERNAL void SN_DECL kernel_scalar_mul_avx(MAT_KERNEL(float) * matrix, float scalar, + MAT_KERNEL(float) * ans) { register __m256 scalar_vec = _mm256_broadcast_ss(&scalar); @@ -124,7 +132,8 @@ INTERNAL void SN_DECL kernel_scalar_mul_avx(mat_kernel *matrix, float scalar, ma ans->ymm[1] = c1; } -INTERNAL void SN_DECL kernel_scalar_mul_512(mat_kernel *matrix, float scalar, mat_kernel *ans) +INTERNAL void SN_DECL kernel_scalar_mul_512(MAT_KERNEL(float) * matrix, float scalar, + MAT_KERNEL(float) * ans) { __m512 scalar_vec = _mm512_broadcastss_ps(_mm_load_ss(&scalar)); diff --git a/StgSharp.Native/sn-src/k_fma.c b/StgSharp.Native/sn-src/k_fma.c index bfb6f72d..b6c8ab7d 100644 --- a/StgSharp.Native/sn-src/k_fma.c +++ b/StgSharp.Native/sn-src/k_fma.c @@ -1,7 +1,7 @@ #include "sn_intrinsic.h" // ans = left * right(T) + ans -INTERNAL void SN_DECL kernel_fma_sse(mat_kernel const *restrict left, +INTERNAL void SN_DECL f32_fma_sse(MAT_KERNEL(float) const *restrict left, mat_kernel const *restrict right, mat_kernel *restrict ans) { register __m128 source0 = _mm_load_ps(&left->xmm[0]); diff --git a/StgSharp.Native/sn-src/load_intrinsic.c b/StgSharp.Native/sn-src/load_intrinsic.c index 8b89f0e7..525440f9 100644 --- a/StgSharp.Native/sn-src/load_intrinsic.c +++ b/StgSharp.Native/sn-src/load_intrinsic.c @@ -66,10 +66,10 @@ void load_intrinsic_sse(sn_intrinsic *context) context->city_hash_simplify = city_hash_simplify_sse; context->factorial_simd = factorial_simd_sse; context->index_pair = index_pair_sse; - context->kernel_add = (MATARITHMETIC)kernel_add_sse; + context->kernel_add = (MATARITHMETIC)f32_add_sse; context->kernel_fma = (void(*)(void*, void*, void*))kernel_fma_sse; context->kernel_scalar_mul = kernel_scalar_mul_sse; - context->kernel_sub = (MATARITHMETIC)kernel_sub_sse; + context->kernel_sub = (MATARITHMETIC)f32_sub_sse; context->kernel_transpose = (MATTRANSPOSEPROC)kernel_transpose_sse; context->normalize_3 = normalize; } @@ -79,10 +79,10 @@ void load_intrinsic_avx(sn_intrinsic *context) context->city_hash_simplify = city_hash_simplify_sse; context->factorial_simd = factorial_simd_sse; context->index_pair = index_pair_sse; - context->kernel_add = (MATARITHMETIC)kernel_add_avx; + context->kernel_add = (MATARITHMETIC)f32_add_avx; context->kernel_fma = (void(*)(void*, void*, void*))kernel_fma_sse; context->kernel_scalar_mul = kernel_scalar_mul_avx; - context->kernel_sub = (MATARITHMETIC)kernel_sub_avx; + context->kernel_sub = (MATARITHMETIC)f32_sub_avx; context->kernel_transpose = (MATTRANSPOSEPROC)kernel_transpose_avx; context->normalize_3 = normalize; } @@ -92,10 +92,10 @@ void load_intrinsic_512(sn_intrinsic *context) context->city_hash_simplify = city_hash_simplify_sse; context->factorial_simd = factorial_simd_sse; context->index_pair = index_pair_sse; - context->kernel_add = (MATARITHMETIC)kernel_add_512; + context->kernel_add = (MATARITHMETIC)f32_add_512; context->kernel_fma = (void(*)(void*, void*, void*))kernel_fma_sse; context->kernel_scalar_mul = kernel_scalar_mul_512; - context->kernel_sub = (MATARITHMETIC)kernel_sub_512; + context->kernel_sub = (MATARITHMETIC)f32_sub_512; context->kernel_transpose = (MATTRANSPOSEPROC)kernel_transpose_512; context->normalize_3 = normalize; } diff --git a/autoadd.sh b/autoadd.sh deleted file mode 100644 index 0aad5137..00000000 --- a/autoadd.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash - -clear - -# 设置要查找的文件类型 -file_types=( "*.cs" "*.c" "*.cpp" "*.h" "*.txt" "*.csproj" "*.vs" "*.vert" "*.frag" "*.sln" "*.vcxproj" "*.json" "*.sh" ) - -# 循环遍历每个文件类型,并添加到git -for type in "${file_types[@]}"; do - - # 执行find命令,并将输出保存到变量中 - add_output=$(find . -name "$type" -exec git add '{}' + 2>&1) - add_status=$? - - # 检查find命令的退出状态 - if [ $add_status -ne 0 ]; then - # 如果出错,显示保存的输出 - echo "$add_output" - exit 1 - fi -done -clear - -# 提示用户输入commit信息 -echo "====================== file added ======================" -echo "请输入commit信息:" -read commit_message - -# 执行git commit命令,并将输出保存到变量中 -commit_output=$(git commit -m "$commit_message" 2>&1) -commit_status=$? - -# 检查git commit命令的退出状态 -if [ $commit_status -ne 0 ]; then - # 如果出错,显示保存的输出 - echo "$commit_output" - exit 1 -fi - -clear - -echo "" -echo "================ successfully committed =================" -echo "" -# 执行git push命令 -git push CCD_Git local:main -git push CCD_Git local:nitload - -if [ $? -ne 0 ]; then - exit 1 -fi - -echo "" -echo "Successfully pushed, press enter to quit" -read commit_message - -clear -exit diff --git a/errorIDarrange.xlsx b/errorIDarrange.xlsx deleted file mode 100644 index fbb6e0b7..00000000 Binary files a/errorIDarrange.xlsx and /dev/null differ