From e1d2a8707dbdcee2de1b18cfa5769a080ec8e60e Mon Sep 17 00:00:00 2001 From: Nitload Date: Sun, 4 Jan 2026 07:56:37 +0800 Subject: [PATCH] add isa check --- .../Numeric/MatrixParallel.cs | 6 +- StgSharp.Native/StgSharp.Native.vcxproj | 7 + .../StgSharp.Native.vcxproj.filters | 3 + StgSharp.Native/sn-head/sn_intrinsic.h | 36 +++- StgSharp.Native/sn-head/sn_target.h | 61 ++++++ StgSharp.Native/sn-head/ssc_internal.h | 32 ---- StgSharp.Native/sn-head/ssc_intrinsic.h | 176 ------------------ StgSharp.Native/sn-src/k_bufop.c | 6 + StgSharp.Native/sn-src/load_intrinsic.c | 1 + StgSharpDebug/ExpLinearExpressionTest.cs | 175 ----------------- StgSharpDebug/Program.cs | 22 +-- StgSharpDebug/StepReadingTest.cs | 76 -------- StgSharpDebug/TestFileRead.cs | 55 ------ 13 files changed, 123 insertions(+), 533 deletions(-) create mode 100644 StgSharp.Native/sn-head/sn_target.h delete mode 100644 StgSharp.Native/sn-head/ssc_internal.h delete mode 100644 StgSharp.Native/sn-head/ssc_intrinsic.h delete mode 100644 StgSharpDebug/ExpLinearExpressionTest.cs delete mode 100644 StgSharpDebug/StepReadingTest.cs delete mode 100644 StgSharpDebug/TestFileRead.cs diff --git a/StgSharp.Mathematics/Numeric/MatrixParallel.cs b/StgSharp.Mathematics/Numeric/MatrixParallel.cs index 83cd79c8..c6d1a8d1 100644 --- a/StgSharp.Mathematics/Numeric/MatrixParallel.cs +++ b/StgSharp.Mathematics/Numeric/MatrixParallel.cs @@ -1,9 +1,9 @@ - //----------------------------------------------------------------------- +//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="MatrixParallel" // Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. +// 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 diff --git a/StgSharp.Native/StgSharp.Native.vcxproj b/StgSharp.Native/StgSharp.Native.vcxproj index 2858b025..e16d55be 100644 --- a/StgSharp.Native/StgSharp.Native.vcxproj +++ b/StgSharp.Native/StgSharp.Native.vcxproj @@ -61,14 +61,20 @@ $(SolutionDir)build + true + false $(SolutionDir)build false + true + false $(SolutionDir)build false + true + false @@ -175,6 +181,7 @@ + diff --git a/StgSharp.Native/StgSharp.Native.vcxproj.filters b/StgSharp.Native/StgSharp.Native.vcxproj.filters index 8161ef1c..8754294f 100644 --- a/StgSharp.Native/StgSharp.Native.vcxproj.filters +++ b/StgSharp.Native/StgSharp.Native.vcxproj.filters @@ -92,6 +92,9 @@ 头文件 + + 头文件 + diff --git a/StgSharp.Native/sn-head/sn_intrinsic.h b/StgSharp.Native/sn-head/sn_intrinsic.h index e3f87a4b..a04779a0 100644 --- a/StgSharp.Native/sn-head/sn_intrinsic.h +++ b/StgSharp.Native/sn-head/sn_intrinsic.h @@ -1,4 +1,4 @@ -#ifndef SSC_INTRIN +#ifndef SSC_INTRIN #define SSC_INTRIN #define SSC_INTRIN_HEAD @@ -328,4 +328,38 @@ typedef enum most_advanced_instruction { #endif } most_advanced_instruction; +#include "sn_target.h" + +#if SN_IS_ARCH(SN_ARCH_X86_64) + +typedef enum intrinsic_level { + // No SIMD support, will cause error if used in matrix operations + SIMD0 = 0, + // SSE4.2 support + SIMD1 = 1, + // AVX2 support + SIMD2 = 2, + // AVX2 and AVX2-FMA support + SIMD3 = 3, + // AVX2-16C support based on SIMD3 + SIMD4 = 4, + // AVX-512-dual support + SIMD5 = 5, + // AVX-512-native support + SIMD6 = 6, + // AVX-512 with 8/16-wide support + SIMD7 = 7, + // AMX support + SIMD8 = 8, + // AVX-10 support + SIMD9 = 9, + // future use + SIMD_MAX = 10 +} intrinsic_level; + +#else +typedef enum intrinsic_level { +} intrinsic_level; +#endif + #endif diff --git a/StgSharp.Native/sn-head/sn_target.h b/StgSharp.Native/sn-head/sn_target.h new file mode 100644 index 00000000..5724ec84 --- /dev/null +++ b/StgSharp.Native/sn-head/sn_target.h @@ -0,0 +1,61 @@ +#ifndef SN_TARGET +#define SN_TARGET + +typedef enum SN_OS_T { + SN_OS_WINDOWS, + SN_OS_LINUX, + SN_OS_MACOS, + SN_OS_IOS, + SN_OS_ANDROID, + SN_OS_UNKNOWN +} SN_OS_T; + +typedef enum SN_ARCH_T { + SN_ARCH_X86_64, + SN_ARCH_ARM64, + SN_ARCH_RISCV64, + SN_ARCH_PPC64le, +} SN_ARCH_T; + +/* + * Target selection policy: + * - Default (no SN_EXTERN_TARGET): fixed Windows + x86_64. + * - External (SN_EXTERN_TARGET): build system must provide SN_OS and SN_ARCH. + */ +#ifndef SN_EXTERN_TARGET + +#define SN_OS_TARGET SN_OS_WINDOWS +#define SN_ARCH_TARGET SN_ARCH_X86_64 + +#else + +#ifndef SN_OS_TARGET +#error "SN_EXTERN_TARGET is defined but SN_OS is not provided." +#endif + +#ifndef SN_ARCH_TARGET +#error "SN_EXTERN_TARGET is defined but SN_ARCH is not provided." +#endif + +/* Validate externally supplied values are within known enum constants. */ +#if (SN_OS_TARGET != SN_OS_WINDOWS) && (SN_OS_TARGET != SN_OS_LINUX) && (SN_OS_TARGET != SN_OS_MACOS) && \ + (SN_OS_TARGET != SN_OS_IOS) && (SN_OS_TARGET != SN_OS_ANDROID) && (SN_OS_TARGET != SN_OS_UNKNOWN) +#error "SN_OS has an invalid value. Use SN_OS_<...> enum constants." +#endif + +#if (SN_ARCH_TARGET != SN_ARCH_X86_64) && (SN_ARCH_TARGET != SN_ARCH_ARM64) && (SN_ARCH_TARGET != SN_ARCH_RISCV64) && \ + (SN_ARCH_TARGET != SN_ARCH_PPC64le) +#error "SN_ARCH has an invalid value. Use SN_ARCH_<...> enum constants." +#endif + +#endif + +#ifndef SN_IS_OS +#define SN_IS_OS(os) ((SN_OS_TARGET) == (os)) +#endif + +#ifndef SN_IS_ARCH +#define SN_IS_ARCH(arch) ((SN_ARCH_TARGET) == (arch)) +#endif + +#endif // SN_TARGET diff --git a/StgSharp.Native/sn-head/ssc_internal.h b/StgSharp.Native/sn-head/ssc_internal.h deleted file mode 100644 index 35921e9f..00000000 --- a/StgSharp.Native/sn-head/ssc_internal.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifdef _MSC_VER -#pragma once -#endif - -#include - -#ifndef SSC_INTERNAL -#define SSC_INTERNAL - -#ifdef _MSC_VER -#define _CRT_SECURE_NO_WARNINGS 1 -#define WIN32_LEAN_AND_MEAN -#define SSCDECL __cdecl -#define SSCAPI __declspec(dllexport) -#define FORCEINLINE __forceinline -#include -#elif defined(__clang__) || defined(__GNUC__) -#define SSCDECL __attribute__((cdecl)) -#define SSCAPI __attribute__((dllexport)) -#define FORCEINLINE __attribute__((always_inline)) -#else -#define SSCAPI -#define SSCDECL -#define FORCEINLINE -#endif - -#define SSCAPI_DEFINE - -#define PRIVATE static -#define INTERNAL extern - -#endif // diff --git a/StgSharp.Native/sn-head/ssc_intrinsic.h b/StgSharp.Native/sn-head/ssc_intrinsic.h deleted file mode 100644 index e66e467a..00000000 --- a/StgSharp.Native/sn-head/ssc_intrinsic.h +++ /dev/null @@ -1,176 +0,0 @@ -#ifdef _MSC_VER -#pragma once -#endif - -#ifndef SSC_INTRIN -#define SSC_INTRIN - -#include "StgSharpC.h" -#include -#include - -#ifdef _MSC_VER -#include -#include -#endif - -#define LASTTWO(x) (x & 3) -#define LAST(x) (x & 3) -#define get_align_begin(x) ((x + 15) & (~15)) - -#define SSE_INSERT(source, target, reset3, reset2, reset1, reset0) \ - (LASTTWO(source - 1) << 6) | (LASTTWO(target - 1) << 4) | (LAST(reset3) << 3) | \ - (LAST(reset2) << 2) | (LAST(reset1) << 1) | LAST(reset0) -#define SSE_INSERT_SIMPLE(source, target) SSE_INSERT(source, target, 0, 0, 0, 0) -#define M256_PERMUTE(s3, s2, s1, s0) (LASTTWO(s3) << 6) | (LASTTWO(s2) << 4) | (LASTTWO(s1) << 2) | (LASTTWO(s0) - -#define zero_vec _mm_setzero_ps() -#define zero_vec_256 _mm256_setzero_ps() - -typedef union uint64_u { - uint64_t u64; - uint32_t u32[2]; -} uint64_u; - -typedef union mat_kernel{ - __m128 xmm[4]; - __m256 ymm[2]; - __m512 zmm[1]; - 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 void(SSCDECL *VECTORNORMALIZEPROC)(__m128 *source, __m128 *target); -typedef void(SSCDECL *DOTPROC)(void *transpose, __m128 *vector, __m128 *ans); -typedef void(SSCDECL *MATRIXTRANSPOSEPROC)(void *source, void *target); -typedef void(SSCDECL *MATRIXDETPROC)(void *mat, void *transpose); -typedef void(SSCDECL *MATARITHMETIC)(void *left, void *right, void *ans); -typedef void(SSCDECL *SCALERMATARITHMETIC)(void *left, void *right, void *ans); -typedef uint64_t(SSCDECL *FACTORIALROC)(int n); - - -#pragma region matix function - -INTERNAL void normalize(__m128 *source, __m128 *target); - -INTERNAL void SSCDECL addmatrix2_sse(__2_columnset *left, __2_columnset *right, __2_columnset *ans); -INTERNAL void SSCDECL addmatrix2_avx(__2_columnset *left, __2_columnset *right, __2_columnset *ans); -INTERNAL void SSCDECL submatrix2_sse(__2_columnset *left, __2_columnset *right, __2_columnset *ans); -INTERNAL void SSCDECL addmatrix2_avx(__2_columnset *left, __2_columnset *right, __2_columnset *ans); -INTERNAL void SSCDECL transpose23(__2_columnset const *source, __3_columnset *target); -INTERNAL void SSCDECL transpose24(__2_columnset const *source, __4_columnset *target); - -INTERNAL void SSCDECL addmatrix3_sse(__3_columnset *left, __3_columnset *right, __3_columnset *ans); -INTERNAL void SSCDECL addmatrix3_avx(__3_columnset *left, __3_columnset *right, __3_columnset *ans); -INTERNAL void SSCDECL addmatrix3_512(__3_columnset *left, __3_columnset *right, __3_columnset *ans); -INTERNAL void SSCDECL submatrix3_sse(__3_columnset *left, __3_columnset *right, __3_columnset *ans); -INTERNAL void SSCDECL submatrix3_avx(__3_columnset *left, __3_columnset *right, __3_columnset *ans); -INTERNAL void SSCDECL submatrix3_512(__3_columnset *left, __3_columnset *right, __3_columnset *ans); -INTERNAL void SSCDECL transpose32(__3_columnset const *source, __2_columnset *target); -INTERNAL void SSCDECL transpose33(__3_columnset const *source, __3_columnset *target); -INTERNAL void SSCDECL transpose34(__3_columnset const *source, __4_columnset *target); -INTERNAL float SSCDECL det_mat3(__3_columnset *matrix, __3_columnset *tranpose); - -INTERNAL void SSCDECL addmatrix4_sse(__4_columnset *left, __4_columnset *right, __4_columnset *ans); -INTERNAL void SSCDECL addmatrix4_avx(__4_columnset *left, __4_columnset *right, __4_columnset *ans); -INTERNAL void SSCDECL addmatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans); -INTERNAL void SSCDECL submatrix4_sse(__4_columnset *left, __4_columnset *right, __4_columnset *ans); -INTERNAL void SSCDECL submatrix4_avx(__4_columnset *left, __4_columnset *right, __4_columnset *ans); -INTERNAL void SSCDECL submatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans); -INTERNAL void SSCDECL transpose42(__4_columnset const *source, __2_columnset *target); -INTERNAL void SSCDECL transpose43(__4_columnset const *source, __3_columnset *target); -INTERNAL void SSCDECL transpose44(__4_columnset const *source, __4_columnset *target); -INTERNAL float SSCDECL det_mat4(__4_columnset *matrix, __4_columnset *transpose); - -#pragma endregion - -#pragma region dot - -INTERNAL void FORCEINLINE SSCDECL dot_41_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); -INTERNAL void FORCEINLINE SSCDECL dot_31_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans); -INTERNAL void FORCEINLINE SSCDECL dot_41_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); -INTERNAL void FORCEINLINE SSCDECL dot_31_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans); - -INTERNAL void SSCDECL dot_32_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans); -INTERNAL void SSCDECL dot_32_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans); -INTERNAL void SSCDECL dot_42_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); -INTERNAL void SSCDECL dot_42_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); - -INTERNAL void SSCDECL dot_43_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); -INTERNAL void SSCDECL dot_43_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); -//INTERNAL void SSCDECL dot_43_512(__4_columnset *transpose, __m128 *vector, __m128 *ans); - -#pragma endregion - -#pragma region scaler_simd -INTERNAL uint64_t SSCDECL factorial_simd_sse(int n); -#pragma endregion - -#pragma region string - -INTERNAL int SSCDECL city_hash_simplify_sse(byte const *str, int length); -INTERNAL int SSCDECL index_pair_sse(short const *str, uint32_t target, int length); - -#pragma endregion - -typedef struct ssc_intrinsic { - MATARITHMETIC add_m2; - MATARITHMETIC add_m3; - MATARITHMETIC add_m4; - int (*city_hash_simplify)(byte *str, int length); - MATRIXDETPROC det_matrix33; - MATRIXDETPROC det_matrix44; - DOTPROC dot_31; - DOTPROC dot_32; - DOTPROC dot_41; - DOTPROC dot_42; - DOTPROC dot_43; - FACTORIALROC factorial_simd; - int (*index_pair)(short const *str, uint32_t target, int length); - VECTORNORMALIZEPROC normalize_3; - MATARITHMETIC sub_m2; - MATARITHMETIC sub_m3; - MATARITHMETIC sub_m4; - MATRIXTRANSPOSEPROC transpose_23; - MATRIXTRANSPOSEPROC transpose_24; - MATRIXTRANSPOSEPROC transpose_32; - MATRIXTRANSPOSEPROC transpose_33; - MATRIXTRANSPOSEPROC transpose_34; - MATRIXTRANSPOSEPROC transpose_42; - MATRIXTRANSPOSEPROC transpose_43; - MATRIXTRANSPOSEPROC transpose_44; -} ssc_intrinsic; - -typedef enum most_advanced_instruction { -#ifdef _MSC_VER - SSE = __IA_SUPPORT_SSE42, - AVX256 = __IA_SUPPORT_VECTOR256, - AVX512 = __IA_SUPPORT_VECTOR512, - NEON -#else - SSE, - AVX256, - AVX512, - NEON -#endif -} most_advanced_instruction; - -#endif // !SSC_INTRIN diff --git a/StgSharp.Native/sn-src/k_bufop.c b/StgSharp.Native/sn-src/k_bufop.c index 0bfa9ca7..452ba474 100644 --- a/StgSharp.Native/sn-src/k_bufop.c +++ b/StgSharp.Native/sn-src/k_bufop.c @@ -1,3 +1,7 @@ +#include "sn_target.h" + +#if SN_IS_ARCH(SN_ARCH_X86_64) + #include "sn_intrinsic.h" DECLARE_BUF_PROC_ANS_SCALAR(float, sse, fill) @@ -315,3 +319,5 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, scalar_mul) ans[i].f64_z[1] = c1; } } + +#endif \ No newline at end of file diff --git a/StgSharp.Native/sn-src/load_intrinsic.c b/StgSharp.Native/sn-src/load_intrinsic.c index a95a0941..bd0b5e20 100644 --- a/StgSharp.Native/sn-src/load_intrinsic.c +++ b/StgSharp.Native/sn-src/load_intrinsic.c @@ -12,6 +12,7 @@ PRIVATE void load_intrinsic_sse(sn_intrinsic *context); PRIVATE void load_intrinsic_avx(sn_intrinsic *context); PRIVATE void load_intrinsic_512(sn_intrinsic *context); + PRIVATE int check_isa(most_advanced_instruction instruction_family) { if (instruction_family != NEON) { diff --git a/StgSharpDebug/ExpLinearExpressionTest.cs b/StgSharpDebug/ExpLinearExpressionTest.cs deleted file mode 100644 index a7bd02c5..00000000 --- a/StgSharpDebug/ExpLinearExpressionTest.cs +++ /dev/null @@ -1,175 +0,0 @@ -//----------------------------------------------------------------------- -//----------------------------------------------------------------------- -// file="ExpLinearExpressionTest.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 StgSharp.Script; -using StgSharp.Script.Express; - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Schema; - -namespace StgSharp -{ - internal class ExpTestFuncSource : ExpFunctionSource - { - - public ExpTestFuncSource( string name, ScriptSourceTransmitter source ) - : base( name, source ) - { - LocalVariables.Add( - "a", new ExpIntNode( new Token( "a", 0, 0, TokenFlag.Number ), 1, false ) ); - LocalVariables.Add( - "b", new ExpIntNode( new Token( "b", 0, 0, TokenFlag.Number ), 1, false ) ); - LocalVariables.Add( - "c", new ExpIntNode( new Token( "c", 0, 0, TokenFlag.Number ), 1, false ) ); - LocalVariables.Add( - "d", new ExpIntNode( new Token( "d", 0, 0, TokenFlag.Number ), 1, false ) ); - LocalVariables.Add( - "e", new ExpIntNode( new Token( "e", 0, 0, TokenFlag.Number ), 1, false ) ); - } - - } - - internal class TestSchema : ExpSchema - { - - internal ExpTestFuncSource source; - - public TestSchema( ExpTestFuncSource testType ) - { - source = testType; - } - - public override void LoadFromSource( ExpSchemaSource source ) - { - return; - } - - public override bool TryGetConst( string name, out ExpElementInstance c ) - { - c = null; - return false; - } - - public override bool TryGetEntity( string name, out ExpEntitySource e ) - { - e = null; - return false; - } - - public override bool TryGetFunction( string name, out ExpFunctionSource f ) - { - if( name == "TestFunc" ) - { - f = source; - return true; - } - f = null; - return false; - } - - public override bool TryGetProcedure( string name, out ExpProcedureSource p ) - { - p = null; - return false; - } - - public override bool TryGetRule( string name, out ExpRuleSource r ) - { - r = null; - return false; - } - - public override bool TryGetSchemaInclude( string name, out ExpSchema include ) - { - include = null; - return false; - } - - public override bool TryGetType( string name, out ExpTypeSource t ) - { - t = null; - return false; - } - - } - - internal static partial class Program - { - - private const string code = """ - a := ( b * E + d * 2 ) * d; - (**) - a := b + (c + d) - a; - IF a = b THEN - a := a * a; - ELSE - a := c * a; - END_IF - (**) - CASE a OF - 1 : a := 1 + e ; - OTHERWISE : a:=a; - END_CASE - REPEAT a := 1 TO 10; - b := 10; - END_REPEAT - """; - - public static void ExpLinearExpressionTest() - { - ExpressCompile.InitCompile(); - ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END", 0 ); - - foreach( string line in code.Split( - Environment.NewLine, StringSplitOptions.RemoveEmptyEntries ) ) { - transmitter.WriteLine( line ); - } - transmitter.EndWriting(); - ExpTokenReader reader = new ExpTokenReader( transmitter ); - /**/ - ExpTestFuncSource func = new ExpTestFuncSource( "test", transmitter ); - TestSchema testSchema = new TestSchema( func ); - ExpSyntaxAnalyzer generator = new ExpSyntaxAnalyzer( testSchema, func ); - /**/ - - while( reader.TryReadToken( out Token t ) ) - { - Console.WriteLine( t.Value ); - generator.AppendToken( t ); - } - Console.WriteLine( "OK" ); - } - - } -} diff --git a/StgSharpDebug/Program.cs b/StgSharpDebug/Program.cs index 6273151f..9026d7ba 100644 --- a/StgSharpDebug/Program.cs +++ b/StgSharpDebug/Program.cs @@ -2,8 +2,8 @@ // ----------------------------------------------------------------------- // file="Program" // Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. +// 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 @@ -39,16 +39,11 @@ namespace StgSharp private static string testExpPath = @"D:\Programmer\stepcode\data\ap203\ap203.exp"; - internal static unsafe void Main( - string[] args - ) + internal static unsafe void Main(string[] args) { try { - World.Initialize() - .UseModule() - .UseModule() - .InitializeModule(); + World.Initialize().UseModule().UseModule().InitializeModule(); // TestRender(); /**/ @@ -56,14 +51,11 @@ namespace StgSharp unchecked { hlsf = new((nuint)(64 * (ulong)10000 * 10000)); } - Matrix m = Matrix.Create(4000, 4000, MatrixLayout.DenseRectangle, - hlsf); + Matrix m = Matrix.Create(4000, 4000, MatrixLayout.DenseRectangle, hlsf); MatrixCompute.Fill(m, 1.0f); - Matrix n = Matrix.Create(4000, 4000, MatrixLayout.DenseRectangle, - hlsf); + Matrix n = Matrix.Create(4000, 4000, MatrixLayout.DenseRectangle, hlsf); MatrixCompute.Fill(n, 1.0f); - Matrix p = Matrix.Create(4000, 4000, MatrixLayout.DenseRectangle, - hlsf); + Matrix p = Matrix.Create(4000, 4000, MatrixLayout.DenseRectangle, hlsf); MatrixCompute.Fill(p, 0.0f); /* diff --git a/StgSharpDebug/StepReadingTest.cs b/StgSharpDebug/StepReadingTest.cs deleted file mode 100644 index 74cd9c99..00000000 --- a/StgSharpDebug/StepReadingTest.cs +++ /dev/null @@ -1,76 +0,0 @@ -//----------------------------------------------------------------------- -//----------------------------------------------------------------------- -// file="StepReadingTest.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 StgSharp.Model.Step; -using StgSharp.PipeLine; -using StgSharp.Script.Express; - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace StgSharp -{ - internal static partial class Program - { - - private static string[] stepFile = [ - @"D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\StepModel\_NPart#8299.stp", - @"D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\StepModel\¼¸ºÎëÅ÷.STEP", - ]; - - private static void TestStepRead() - { - ExpressCompile.InitCompile(); - if( StepReader.FromFile( stepFile[ 1 ], out StepReader reader ) ) - { - StepModel model = reader.ReadToModelSingleThread(); - PipeLineRunner.SetMaxTaskCount( 1 ); - string[] info = model.ShowStructure( int.MaxValue ); - FileStream fs = File.Open( "D:\\struct.txt", FileMode.Create, - FileAccess.ReadWrite ); - StreamWriter sw = new StreamWriter( fs ); - foreach( string line in info ) - { - sw.WriteLine( line ); - Console.WriteLine( line ); - } - sw.Dispose(); - fs.Dispose(); - - //model.InitEntity(); - reader.Dispose(); - } - } - - } -} diff --git a/StgSharpDebug/TestFileRead.cs b/StgSharpDebug/TestFileRead.cs deleted file mode 100644 index bc9d24a0..00000000 --- a/StgSharpDebug/TestFileRead.cs +++ /dev/null @@ -1,55 +0,0 @@ -//----------------------------------------------------------------------- -//----------------------------------------------------------------------- -// file="TestFileRead.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 StgSharp.Script.Express; - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace StgSharp -{ - internal static partial class Program - { - - private static void TestFileRead() - { - ExpressCompile.InitCompile(); - ExpFileSource reader = new ExpFileSource( testExpPath ); - ExpSchemaSource schemaSource = new ExpSchemaSource(); - schemaSource.ReadSchema( reader ); - - ExpSchema schema = schemaSource.Compile( ExpressCompileOption.Translate ); - } - - } -}