diff --git a/.cmake/arm_optimization.cmake b/.cmake/arm_optimization.cmake new file mode 100644 index 0000000..6d77034 --- /dev/null +++ b/.cmake/arm_optimization.cmake @@ -0,0 +1,63 @@ +# SPDX-License-Identifier: Apache-2.0 +# ARM架构优化配置文件 + +# 检查是否为ARM架构 +if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") + + # 启用NEON指令集优化 + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64") + # ARM64架构 + add_compile_options(-march=armv8-a+simd) + + # 如果支持 crypto 扩展,则启用 + include(CheckCSourceCompiles) + check_c_source_compiles(" + #include + int main() { + uint8x16_t a = vdupq_n_u8(0); + uint8x16_t b = vaeseq_u8(a, vdupq_n_u8(0)); + return 0; + }" HAVE_ARM64_CRYPTO) + + if (HAVE_ARM64_CRYPTO) + add_compile_options(-march=armv8-a+crypto) + add_compile_definitions(HAVE_ARM64_CRYPTO) + endif() + else() + # ARM32架构 + add_compile_options(-march=armv7-a -mfpu=neon) + endif() + + # 通用ARM优化选项 + # 启用循环展开和其他优化 + add_compile_options(-O3 -funroll-loops) + + # 启用链接时优化(LTO) + include(CheckIPOSupported) + check_ipo_supported(RESULT result) + if(result) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) + # 检查编译器是否支持 thin LTO + include(CheckCCompilerFlag) + # check_c_compiler_flag("-flto=thin" HAS_THIN_LTO) + # if(HAS_THIN_LTO) + # add_compile_options(-flto=thin) + # else() + # # 回退到普通 LTO + # add_compile_options(-flto) + # endif() + add_compile_options(-flto=auto) + endif() + + # 启用快速数学运算(可能影响精度) + # add_compile_options(-ffast-math) + + # 针对特定CPU的优化 + # 可以根据目标设备替换为具体的CPU型号,如"cortex-a72"等 + add_compile_options(-mtune=cortex-a76) + + message(STATUS "ARM optimizations enabled for ${CMAKE_SYSTEM_PROCESSOR}") + + # 添加NEON支持的定义 + add_compile_definitions(HAVE_NEON) +endif() \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 42ae352..0466923 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,8 @@ SET(SVARIANT_S "lvl1;lvl3;lvl5") include(.cmake/flags.cmake) include(.cmake/sanitizers.cmake) include(.cmake/target.cmake) +include(.cmake/arm_optimization.cmake) + if(ENABLE_SIGN) include(.cmake/gmpconfig.cmake) add_compile_definitions(ENABLE_SIGN) diff --git a/benchmark.sh b/benchmark.sh index 36275bc..310625b 100755 --- a/benchmark.sh +++ b/benchmark.sh @@ -1,7 +1,7 @@ # cmake -DSQISIGN_BUILD_TYPE=ref -DCMAKE_BUILD_TYPE=Release .. # 包含完整跑分和验证的测试脚本 # BASE_DIR="./build_Neon_ml" -BASE_DIR="./build_baseline" +BASE_DIR="./build_ref_release_test" echo "------------------------start benchmark------------------------------" diff --git a/dataset/ideal_data.csv b/dataset/ideal_data.csv index d559dd6..1c2a27f 100644 --- a/dataset/ideal_data.csv +++ b/dataset/ideal_data.csv @@ -641,3 +641,1203 @@ Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success 2025-11-25-10-22-06,98,2089920809416741331,-135444660,2,0.600,1 Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success 2025-11-25-10-22-06,99,3398410889862017839,-1943155524,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-10,0,1599657028459948827,1061137516,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-10,1,5542039524752250009,-803122588,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-10,2,4799222600510393237,1976249940,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,3,7777642938812639221,922918868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,4,7744214465790053483,-1485950548,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,5,2591510398964428879,-402276036,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,6,5868920230647648591,1802323260,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,7,2498080447229568619,-1243702868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,8,7080445155746033649,-545079356,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,9,4125789601788520811,1114351020,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,10,3712106974927314077,590049908,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,11,7195896859246511093,-1628237868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,12,9073685630274266117,1883344916,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-11,13,7887771872077620237,-503017420,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,14,4772300713263736137,498504996,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,15,4486284497706595677,-594356876,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,16,4962125025785697835,-1809753940,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,17,3937575160021214799,-975333060,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,18,845192584220479105,-1794754044,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,19,6552477714686049571,1511650444,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,20,403910548550156503,-42597540,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,21,7931896749866443773,-1418358796,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,22,8311758937239406767,55911100,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,23,6908856519521511895,1759684444,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,24,7811300906902414793,-1234462940,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-12,25,2032887506157069323,592023596,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,26,2726759079689820621,1945003828,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,27,8868857528650496007,2064375836,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,28,4093242018076817471,-860888836,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,29,1883023652338511035,-181488916,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,30,5864565560710986713,11267940,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,31,7785727045290967981,316739252,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,32,2541598813623334137,-1102392348,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,33,6038614897163397437,590980340,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,34,578785742358288841,-1186044124,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,35,5832797676827155569,-1744408124,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-13,36,2971963279393365443,117208844,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,37,6237012743055928939,-977552980,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,38,1674210921451643981,-791572172,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,39,5202591679471862735,-1723134148,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,40,1776378856163646571,-795315796,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,41,5475985434434829367,1523445980,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,42,1923536012746147313,-1046538300,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,43,1189487771403449433,-1129197212,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,44,6632541416514908157,1170194420,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,45,7826486860098004693,-1113744556,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,46,6710985597830240081,767319364,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,47,35887147277550749,1709970036,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-14,48,4251432835114143793,-844873532,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,49,8905694132717749623,1806702044,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,50,7030644026517269779,-81611700,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,51,3517554534214114647,664171868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,52,7229110016241825587,-2126521140,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,53,1695763767748554155,512079532,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,54,8758707975656232831,830168572,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,55,1634675443576183843,-978947956,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,56,6718249341832879713,-238192252,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,57,1930428742746367819,-832070356,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,58,6193386265215024619,464713644,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,59,6303737270364713591,1441450460,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-15,60,8012679657922652759,-1779848868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,61,3869878049490192691,2143757516,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,62,4399387296251903717,2044197780,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,63,6165064145216223005,1685118068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,64,3193664851977986417,1731298756,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,65,9067288094820464195,1067178252,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,66,4321814142046137387,-944918356,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,67,4643318086334298783,-328668548,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,68,9120545287574643771,520065260,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,69,3492170583432617619,-1035503028,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,70,2507435536671434449,-1309172924,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-16,71,4497816595432187615,-832660612,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,72,1626796019079085439,-588646916,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,73,7523331515980279893,637911380,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,74,7771562693594764507,-1785506964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,75,8691073576911567989,-765201964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,76,5520004140846648133,1466314004,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,77,6462615956280418341,662077588,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,78,4544393045953121947,-1624622484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,79,5162210935444273419,455861292,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,80,517127183486896791,-306369956,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,81,2826006722268239137,1990743172,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,82,7082558737425352143,877598524,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-17,83,8590584552037741925,1957418388,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,84,372636877950897707,-1847248724,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,85,615979575714967905,1569441156,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,86,6688946253692519381,1947668308,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,87,1835285274840143395,1365792908,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,88,9027544449447737207,495377884,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,89,3470917737863752557,-404574796,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,90,5805367868357680163,-1078693748,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,91,5133615244948452567,45798236,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,92,3272269736330745913,-1392156444,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,93,4764700782991239115,2095030060,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,94,586939999157291261,687088628,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-18,95,6790763373265277989,1691832468,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-19,96,2707466895297315109,-1655831404,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-19,97,4305684885653630015,815575292,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-19,98,2045298527070130127,378814268,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-19,99,8912920080000293115,1064592364,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-30,0,7318533438281464993,643232388,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-30,1,6053021862702310799,1613600316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-30,2,6861020590639562923,-153550164,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-30,3,2380506064558336057,-291069724,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-31,4,8419706382541309067,-1311043028,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-31,5,98950908253743255,-1565875620,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-31,6,5750961353496766787,1085449484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-31,7,4687679773151975607,1309106908,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-32,8,8814052368838683643,-246960148,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-32,9,5596560512761123979,-1133817300,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-32,10,4093700343827148853,-354893612,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-32,11,5393835906148713833,720836004,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-32,12,6984397374702672565,625699540,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-33,13,1123579281341028857,357066724,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-33,14,2035964011181928281,-1209418396,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-33,15,3820015490850809545,43752228,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-33,16,5098508548114755327,-1162822660,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-34,17,9146479010451835895,-1372508196,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-34,18,4909583272734022941,-636783500,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-34,19,7174269932027032403,351456588,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-34,20,8406232635651957609,223514020,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-35,21,3974326375541309249,1852570884,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-35,22,5884315989929232073,-1752687836,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-35,23,5207086135411714565,-531716076,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-35,24,6043585200565969413,-433354732,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-36,25,3083929638605926875,-174143636,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-36,26,1763855422196650743,213273564,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-36,27,6590343581315164451,-1069308788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-36,28,7286980189387005411,652375948,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-36,29,2127077461168727309,-1966173132,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-37,30,1958028300909737729,1603001348,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-37,31,2745260331344903343,-954010948,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-37,32,8183270856228166581,-1725600044,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-37,33,79747958549293123,328376588,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-38,34,893141048448689391,-1133866052,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-38,35,2573248301319272033,470604164,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-38,36,4536975537396637667,1957134220,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-38,37,6037206044762085641,394945572,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-39,38,3041284102508605921,2084947844,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-39,39,7734917392222429297,698515908,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-39,40,4929098257425532763,-1553851028,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-39,41,5368461214602220799,458183676,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-39,42,2882889576560752583,-967712996,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-40,43,4163414136038120367,1569812156,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-40,44,2324590053645060073,-1347543132,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-40,45,1672433246969027979,1888581164,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-40,46,2747039689519130231,918526428,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-41,47,4556583129828151579,-339262356,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-41,48,3670010604708733929,1045598116,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-41,49,7405840153005096985,2093351012,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-41,50,1368987223176493887,1307503868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-42,51,8461131142462750669,-1041039564,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-42,52,7122138133846604263,-1799166052,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-42,53,2029227369388214573,596255924,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-42,54,7296860106509297873,13804356,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-42,55,483669840220287867,-610677268,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-43,56,1437665693583473193,792455332,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-43,57,5726306798410235267,-2003438068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-43,58,1559728018533882769,-339841468,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-43,59,7499562821278372279,874006236,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-44,60,9077362907443711859,-1376436788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-44,61,6678795512129583339,-1345068116,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-44,62,3409131097536682249,-173710300,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-44,63,5129534397855354735,-45924932,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-45,64,7202226030484478579,-1402639924,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-45,65,4659914742265115957,1095095508,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-45,66,2083132709956859431,-1276716900,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-45,67,1723586315385313481,-787455196,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-45,68,5717898627623293625,1152928484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-46,69,5057473250938320405,484431956,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-46,70,4249053787512048755,280768972,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-46,71,3611183484416498459,496790636,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-46,72,2115539928518158063,-303326276,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-47,73,8300754347776946921,1813564324,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-47,74,2583120067650473753,-235586460,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-47,75,8978160570305952047,-1509628740,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-47,76,3172716722936628091,-296677908,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-48,77,2155323268969383993,-63495964,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-48,78,878251358228625527,451076572,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-48,79,8860882660545190047,-925146500,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-48,80,5818257136568922237,877249012,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-48,81,6536327219350224833,1951989508,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-49,82,1614114668411853287,-1245812836,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-49,83,2321655753643716669,-625753868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-49,84,7094625208368492535,-44580900,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-49,85,777195761417224635,-2133195028,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-50,86,4248126032798302235,673251436,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-50,87,8005548445106048129,451424772,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-50,88,2753409374955982953,233652644,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-50,89,8931569745247209217,-2141709308,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-51,90,7888648805275262743,-1862828964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-51,91,3399328341160331635,-1491196468,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-51,92,1637555895422754365,-1709934348,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-51,93,3402363284227081841,-1530979900,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-51,94,691410418054094901,-1468432172,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-52,95,3903473645348445821,1415543284,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-52,96,9219709921728224571,-2096794388,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-52,97,8387677386174078945,1441693572,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-52,98,7828391016049944471,705732188,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-31-53,99,1286698040378027709,-1213089036,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-12,0,938216071876189189,-1694994412,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-12,1,1991220017441466553,1157341924,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-13,2,145910379372668037,775131668,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-13,3,1515792960757360987,-873749140,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-14,4,1634125441508243289,1847319908,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-14,5,710287039661953317,2121614484,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-15,6,5051960817205621667,586075788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-15,7,7847106580468766655,-840802564,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-15,8,4700463571381212757,794646868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-16,9,8969822511785434081,-2062061692,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-16,10,3363797811375697907,757317580,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-17,11,8782491749980031895,560934492,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-17,12,4550039300747396663,745937116,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-18,13,8685411053039108197,-2104032876,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-18,14,2616444315583444943,1405345596,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-18,15,8458670085676979611,67065452,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-19,16,4265788924764663859,764592332,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-19,17,3951596764645689065,-1322771548,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-20,18,6273194945510810523,-1211462036,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-20,19,3581209751697837797,812989332,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-20,20,3115624822038386801,-873242172,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-21,21,3303395402663630677,1639079252,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-21,22,5520131868216994915,-1181961844,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-22,23,3764153444253245791,-216234628,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-22,24,8422644268766423853,1966451892,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-22,25,2387527258455622071,1329399516,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-23,26,4570049921869736125,1533256436,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-23,27,7832854198261065939,-2095275188,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-24,28,9118201813581549277,-479773836,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-24,29,1201514200515786367,-1454188036,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-24,30,8293625068229491405,1885334324,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-25,31,2913546229192879973,1860287892,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-25,32,2590851119333138277,-417759852,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-26,33,1415702775326059457,-1688162556,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-26,34,2909268352076653761,-415067388,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-27,35,4855723188376668541,1799759348,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-27,36,1266965396098642659,-1531982964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-27,37,5460801969182308105,1735777316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-28,38,8209840221693625541,1930236692,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-28,39,7636415639259693473,-46201212,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-29,40,693650407200270427,501784940,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-29,41,8367662558161197815,774073308,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-29,42,1981227433642313595,1711873516,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-30,43,3404614590849978961,1390823748,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-30,44,9103422907699177629,910205556,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-31,45,3591216146852130285,-485312588,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-31,46,1413102815957281609,-1057772252,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-31,47,5108242453851530519,-510684068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-32,48,3894394678757139295,-906588804,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-32,49,2028076214301957145,1804365924,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-33,50,2621285534615491629,-427732812,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-33,51,2149555179966075815,2078953116,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-33,52,2107838743381445827,1547318028,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-34,53,7576082653364418029,992204724,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-34,54,4842978414530382695,-740348516,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-35,55,660787186455185799,-1020647908,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-35,56,3312351694514101389,716468788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-35,57,6664249167877715665,-399713468,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-36,58,2872108610781716403,-135233844,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-36,59,5111431743907788291,-1256335348,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-37,60,4027357914135487707,2107478892,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-37,61,6502768088215313025,189229572,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-38,62,1450956542046804395,1693083308,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-38,63,2785728879455619883,838806700,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-38,64,7724547309987555541,2047320916,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-39,65,6466810958007828279,-157025060,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-39,66,3441080439434377055,1344265596,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-40,67,426908254816656155,1928300,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-40,68,738787642072981625,-388660764,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-41,69,3105416503484944611,1198277516,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-41,70,7731121485776709009,-864971196,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-41,71,477335616178895709,66121076,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-42,72,4144372603733913557,2041495380,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-42,73,1671677007428439205,2077700756,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-43,74,938890005184636057,-389574044,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-43,75,3803042437458856793,971124068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-44,76,9126047871003922649,1234715492,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-44,77,2162155592357307961,-28075804,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-44,78,1094018769434348291,117058572,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-45,79,7714897872578855559,-1779758564,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-45,80,4417211917739032471,-640418212,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-46,81,2908099015644112039,2089128604,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-46,82,4927771582768966113,-1797937276,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-46,83,5058622225827186319,1565334076,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-47,84,2294860532495868051,-2115272116,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-47,85,5092541858375695161,-517346076,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-48,86,1476766402978920711,-2027363300,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-48,87,2142070805712303443,-924986036,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-49,88,5799417355008852839,1445399964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-49,89,2592739331507237713,-2035233468,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-49,90,3533845224997081137,1017462980,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-50,91,2242999022278637961,1239279140,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-50,92,4636693652859456491,2080124844,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-51,93,2511295238971790067,-1809036340,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-51,94,3456379565614133781,-446314412,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-51,95,3774336974688186801,-1146763580,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-52,96,9168688997545059979,181574188,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-52,97,8835506412304680471,-261285796,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-53,98,8079012816562096399,-1408490436,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-19-32-53,99,1890725167279472295,-1370096996,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,0,2908312332157811175,-123869284,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,1,4037670284133519241,2008497700,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,2,8235479772930312685,1370761140,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,3,5228778228628891145,-85813212,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,4,775041747497049417,-1230801628,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,5,1069219061718029779,1662932812,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,6,2258129492518452971,-912983124,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-24,7,3094433212471245523,1779690316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,8,742638702693766645,-1710008364,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,9,3048269783133688745,-1930015068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,10,1239224335701816561,-635776060,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,11,8206017996358539419,-1247321492,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,12,7832102825659223985,1057046212,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,13,6003810969224210969,1557112932,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,14,3606276479525147801,-1346022812,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,15,8437319327436261585,-511630524,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,16,4679580951248131513,-1554950428,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,17,4915252838766326761,-1349070940,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-25,18,8343900638103650797,-1656027212,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,19,7389276772254161927,352612380,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,20,668748170490861811,-382508084,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,21,6821854576576164789,-389558572,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,22,7572339467987249209,808689892,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,23,8597130227304815835,-1726254228,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,24,6425720232496107997,-1344125068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,25,543332568596804993,-1468803580,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,26,7534638309016416385,-1075527164,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,27,2134859121086336265,392836132,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,28,5021816907054221991,538061468,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,29,4973241051099693827,-457176052,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-26,30,6083667409472105885,-455952780,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,31,8433072375702921639,-608532836,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,32,2992120937290895401,-521256796,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,33,4075290915256614921,-2130903004,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,34,933267725518807359,-276134660,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,35,8786443981057043571,655929804,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,36,7968992586576855411,-762706484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,37,5564748250246988573,-2117399436,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,38,4803161887180633465,274912740,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,39,618950637055627239,-590397540,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,40,5732711771119580987,891411692,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,41,7917026296078282625,1555086852,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-27,42,4083928642638773405,35385972,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,43,8217975483078503513,118337892,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,44,7532753661288553305,-964530844,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,45,6591837111763129969,1602443716,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,46,2066122877337011919,-1746134212,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,47,7765160328760581019,-1360302484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,48,5119060868923697229,254976308,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,49,8044467940934087563,697552428,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,50,2799708302981365517,-408290252,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,51,3506811255289669965,-142105292,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,52,3782158473207506901,-552493228,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,53,6878575649207132933,1318226964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-28,54,5297636685530111583,1483110780,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,55,580767326647959277,-402326604,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,56,2632145240647876815,1211433788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,57,1784565008643204171,1796509996,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,58,1227444933853153509,-22142060,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,59,4503691736739080601,-2000181660,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,60,1937482641471769913,-308005660,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,61,2241835001625449031,-1817163492,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,62,2621524569736319837,-1268888204,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,63,4626241477368704533,2130032724,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,64,8893925596502997795,-113054580,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-29,65,1220620635627495215,5930172,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,66,885813966814336501,875648980,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,67,6940160198177465019,45124332,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,68,2542623083237893109,678006740,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,69,3421856131846921783,-1393985316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,70,1938073649040633665,-1636647676,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,71,5128922249109005393,183865668,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,72,801442510681329687,1950040156,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,73,7012680905769333441,506383108,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,74,3127710507418405945,1807298788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,75,2255874372629460531,-1175332660,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,76,1557164342265136713,1450776868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-30,77,5148465045687922759,-1426472676,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,78,493410390547892439,1147151196,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,79,4613364522859195761,296072644,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,80,5212916378508197553,-483394876,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,81,688323253684520413,-905504908,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,82,958567005998413747,-137896244,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,83,413041140469113765,1562545812,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,84,5369177592474531381,-38151980,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,85,7677691365342267051,2034047660,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,86,324956210155841181,1200986740,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,87,7407409616938481031,-1380395492,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,88,7897830881241867043,840993932,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-31,89,2228639000940052025,1047787748,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,90,877208919987692843,-693201748,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,91,912555656058156687,343595580,2,0.900,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,92,1756994318984608647,-1110184420,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,93,8928945004564403865,1077762660,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,94,3015341888707969427,590153292,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,95,4411823100433450099,-1530195508,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,96,2199185542500814179,2143171980,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,97,138529298038785135,-2108157508,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,98,7436605539855834153,-952340316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-32,99,4116469748912105883,-500128148,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-43,0,6357663665342628199,1486816668,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-44,1,4355250882427884953,-347580828,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-44,2,1305122992407673199,2057168316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-44,3,3561631425408069537,-247218556,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-44,4,6771518253589854381,-47193420,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-45,5,8859165477906798827,-735616084,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-45,6,1077978190169264699,1923172588,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-45,7,5619210699301248483,-944539764,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-45,8,2407727992745447701,762135636,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-46,9,6558353772984628493,408802356,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-46,10,8211909980815279269,-672460140,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-46,11,2593564421774559703,-1210374308,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-46,12,9103261189008509983,-238079876,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-46,13,2027570730663132063,413068924,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-47,14,8590993316999810645,2115844436,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-47,15,2881185902171018735,1527863228,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-47,16,4023506840865815089,77916356,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-47,17,3668057358971614173,1695207284,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-48,18,5507367957483103485,-2070375436,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-48,19,5467712876559352025,1956184932,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-48,20,5995289053601047329,-155808636,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-48,21,2650110598041741067,790273068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-49,22,6099686338470798899,392927436,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-49,23,3183207507609291673,-2052968860,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-49,24,1554433216462786525,961822580,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-49,25,220706224941160533,-1521000108,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-49,26,5645581748009071917,-1039543116,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-50,27,2841841724337860991,1546307068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-50,28,4594111627536419869,120795252,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-50,29,8689542002052997987,-1798140532,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-50,30,9044141236230810903,1342157916,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-51,31,3328333304295490413,579472820,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-51,32,2869690310896361891,-1318156660,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-51,33,7869833367759676463,-615280452,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-51,34,5206669656745189189,-462914284,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-51,35,1374935145849076787,-165482292,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-52,36,1787509189498236551,-2094548452,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-52,37,5776682318272308349,1671074292,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-52,38,3397394597921010957,-341388236,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-52,39,8949417688286166895,-1013711428,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-53,40,6941268654527643851,1857159980,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-53,41,3901405281984474915,-703480692,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-53,42,1809196072847435577,-1939235612,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-53,43,3399059002576061567,-1936780804,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-54,44,5951011532967060379,1929678444,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-54,45,6834411833707046117,-212429932,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-54,46,8020110237756003781,1403934484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-54,47,7945340493036176033,734726788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-54,48,2657898157246083093,-549076908,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-55,49,7370301293051753405,-271659276,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-55,50,6407424909043898469,-231448172,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-55,51,6381620487503911077,-1541774700,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-55,52,5156252217432188629,-2122933420,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-56,53,4084816729844638583,-1411805732,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-56,54,2893961382077230811,832945004,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-56,55,6664724455072980381,-1712359820,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-56,56,6577740713999082171,-366441748,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-57,57,5531116700778565091,1150039948,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-57,58,4732057182259933811,901892556,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-57,59,4914204545914132209,-481731644,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-57,60,5535282830376347359,-811951236,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-57,61,5359139572380902281,1174572580,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-58,62,6290069756704286155,1394972460,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-58,63,6044165249043392075,603429164,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-58,64,7827263100466389503,-347502596,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-58,65,819141057466554337,-1662165116,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-59,66,1614561862251942717,1840139508,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-59,67,8526914237314160629,89350100,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-59,68,7804080211921108225,2027549700,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-00-59,69,6389733155064032231,344108956,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-00,70,2221454557737746083,444988044,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-00,71,7513214533994673061,1882705556,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-00,72,8955346213393726639,132379324,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-00,73,8710544374264367667,-247977780,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-01,74,13480169880124089,-2065831196,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-01,75,1392393819541933883,-453231380,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-01,76,7319327669309958505,1872864676,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-01,77,7926897935327129905,-674380604,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-01,78,6036256452578569283,1953214732,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-02,79,2356309091825948427,-46375892,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-02,80,3132228734321101373,569125108,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-02,81,2624451970956182997,-1951721644,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-02,82,4687204600306617651,459879628,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-03,83,4145186703486103567,-203898820,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-03,84,8992676790029404993,-966185724,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-03,85,4466619931668267937,-1760489852,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-03,86,7613721872088746951,1373843228,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-04,87,6290149875403744207,-1381920964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-04,88,3306114975712008817,665283012,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-04,89,6033504948981540873,174891044,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-04,90,1893768572681246213,-707045356,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-04,91,6379932222201384807,226966940,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-05,92,8092005662840662223,-1203461316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-05,93,2163952078208019881,-767904092,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-05,94,8115994620143139647,846458108,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-05,95,3676810898045531671,-249046948,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-06,96,8430684940819723691,-617752916,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-06,97,4933236533417745627,2103473004,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-06,98,877975413076019211,665919532,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-06,99,3347437129104618741,1894765524,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-26,0,198467089894900259,589957260,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-26,1,2651489349148826745,922579428,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-27,2,688127507147318829,-1631348556,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-27,3,7433857897007922913,-141624444,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-28,4,269295044789165751,1907981020,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-28,5,6298688288311897009,1593421508,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-28,6,8959758710414574775,501486300,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-29,7,7689597336543466139,970607212,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-29,8,8787910518342219223,1859376988,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-30,9,8304922956045382883,1749668748,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-30,10,8343210517948062751,576942204,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-31,11,4316493468498011389,1685623796,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-31,12,5041857483234336933,558858900,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-32,13,361189283237858973,810039924,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-32,14,2094085935860801611,1082097964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-32,15,4252708169399476879,1775536700,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-33,16,810819270138718947,916695948,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-33,17,4858460768846410823,-385101540,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-34,18,5995647744064716913,2103837124,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-34,19,7259682983329937649,-313465916,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-35,20,7177722755968142419,-153079476,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-35,21,5543402994081420747,-1807919316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-35,22,2657347046531688089,97622628,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-36,23,7659268884188478771,-452528948,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-36,24,3692658645010309045,1920302804,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-37,25,771024900580647247,-2141420228,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-37,26,5271357515876633235,1738943052,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-37,27,1982770168811513025,2097255172,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-38,28,1223024223065515299,1041405068,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-38,29,4191464225234429261,-1486056140,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-39,30,5137903234783602307,-1100113396,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-39,31,9099335001464872697,-631342108,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-39,32,6276415713678257173,-773607340,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-40,33,6053974857154036973,-1623190604,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-40,34,8738111241170815943,1733701404,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-41,35,2935030109956789491,-1808575540,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-41,36,515969054747884839,2103309468,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-42,37,2112424539584423987,-486694708,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-42,38,5599608170702994315,1619127852,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-42,39,110515015093353477,1676800020,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-43,40,5739599568288982417,862361156,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-43,41,3498102799127763415,658335580,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-44,42,2292870839797824685,-939461964,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-44,43,5248571942963926497,-104245372,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-44,44,695521648435423769,1381607524,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-45,45,80822351582373537,-1880450428,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-45,46,2743486416492239815,-729518308,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-46,47,3271028732768699631,186192828,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-46,48,3258481783828280693,1084872148,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-47,49,2005944153147956003,1050635404,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-47,50,4777651694119871541,1648070868,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-47,51,5636077525371813297,-1452935484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-48,52,7034595134663782487,827179356,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-48,53,7843541417291945049,-620736156,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-49,54,6454737594694156891,678103404,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-49,55,2614905881827851387,1035399660,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-50,56,6730924391376883957,-1205845036,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-50,57,597913105565520485,-551401068,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-50,58,7633913002727471495,389670428,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-51,59,6852994644907696975,-2055041732,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-51,60,4710907241434636617,-568621788,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-52,61,7697838806194648935,-171188836,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-52,62,2825169584740485607,1657218972,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-52,63,8142606446064398985,1843776036,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-53,64,8086965426486289085,-766342412,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-53,65,5372936376316784707,1015791884,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-53,66,2148451553937817139,-1503266612,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-54,67,7954486127930371399,1749005596,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-54,68,8021559727571045973,-372360876,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-55,69,8447574009227232641,-2025908732,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-55,70,7965274695372334559,-800221316,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-56,71,7597405427981542067,-1780774196,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-56,72,7270095806736222883,1850157708,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-56,73,3195584933103523137,1290228996,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-57,74,5010812796866701931,-454907476,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-57,75,5918244665085963273,-1322078172,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-58,76,3904468343008486079,-1222800644,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-58,77,1796380062252434979,-1868949364,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-59,78,559919167387613655,-1941379236,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-59,79,8810747812414064269,-235529676,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-01-59,80,2757596637562580397,1055569588,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-00,81,4045378388224912229,-792679020,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-00,82,1429864008502327591,-1080630116,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-01,83,1916257256881436581,448454292,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-01,84,7209457646970343945,1536182308,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-01,85,2929364380622710555,-221537172,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-02,86,1727048340513134855,-119905252,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-02,87,6261539677740109117,-1160104716,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-03,88,4938405903481399681,-2033342972,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-03,89,8604388635356772371,-547037108,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-03,90,971327216873936667,1774345324,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-04,91,5108759590674170341,335808404,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-04,92,8605002311299956967,567018396,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-05,93,2887683344572001709,605730484,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-05,94,5975966853363293529,-1326877340,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-05,95,7556356110664655881,-1307340764,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-06,96,5896253953545219729,-1707558332,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-06,97,979197621110563627,-1932555092,2,0.600,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-07,98,8030520998534970229,-604508716,2,0.100,1 +Timestamp,Attempt,Norm,Trace,KernelOrder,Prob,Success +2025-11-25-20-02-07,99,1559982148112250333,-2001086604,2,0.100,1 diff --git a/src/common/arm64crypto/randombytes_ctrdrbg.c b/src/common/arm64crypto/randombytes_ctrdrbg.c index a775f9d..5bc3d06 100644 --- a/src/common/arm64crypto/randombytes_ctrdrbg.c +++ b/src/common/arm64crypto/randombytes_ctrdrbg.c @@ -7,213 +7,164 @@ static AES256_CTR_DRBG_struct DRBG_ctx; -// 优化1: 改进S-box实现,减少内存操作 +__attribute__((always_inline, hot)) static inline uint32_t AES_sbox_x4(uint32_t in) { uint8x16_t sbox_val = vreinterpretq_u8_u32(vdupq_n_u32(in)); sbox_val = vaeseq_u8(sbox_val, vdupq_n_u8(0)); + return vgetq_lane_u32(vreinterpretq_u32_u8(sbox_val), 0); } #define ROTR32(x, n) ((x << (32 - n)) | (x >> n)) -// 优化2: 使用更紧凑的数据结构,提高缓存效率 typedef union { - uint8_t u8[240]; // 15*16 - uint32_t u32[60]; // 15*4 - uint8x16_t v[15]; + uint8_t u8[15][16]; + uint32_t u32[15][4]; } subkeys_t; -// 优化3: 改进密钥调度,使用Neon指令进行批量处理 +__attribute__((hot)) static void AES256_key_schedule(uint8_t subkeys[15][16], const uint8_t *key) { subkeys_t *sk = (subkeys_t *)subkeys; - uint8x16_t rcon = vdupq_n_u8(0x01); - uint8x16_t rcon_step = vdupq_n_u8(0x1b); + uint8_t rcon = 1; + uint32_t s; + int i, j; - // 一次性复制前两轮密钥 - memcpy(&subkeys[0][0], key, 32); + memcpy(&subkeys[0][0], key, 32 * sizeof(uint8_t)); - uint8x16_t prev_key = vld1q_u8(&subkeys[0][0]); - uint8x16_t prev_prev_key = vld1q_u8(&subkeys[1][0]); + for (i = 2; i < 14; i += 2) { + s = AES_sbox_x4(sk->u32[i - 1][3]); + sk->u32[i][0] = ROTR32(s, 8) ^ rcon ^ sk->u32[i - 2][0]; - for (int i = 2; i < 15; i++) { - // 提取最后一列并进行S-box变换 - uint8x16_t last_col = vextq_u8(prev_key, vdupq_n_u8(0), 12); - last_col = vaeseq_u8(last_col, vdupq_n_u8(0)); - - // RotWord - last_col = vextq_u8(last_col, last_col, 3); - - // XOR with rcon - uint8x16_t new_key_first = veorq_u8(veorq_u8(last_col, rcon), prev_prev_key); - - // 生成新密钥的剩余部分 - uint8x16_t new_key = vextq_u8(prev_prev_key, new_key_first, 12); - - // 保存新密钥 - vst1q_u8(&subkeys[i][0], new_key); - - // 更新rcon - uint8_t rcon_val = vgetq_lane_u8(rcon, 0); - rcon_val = (rcon_val << 1) ^ ((rcon_val >> 7) * 0x1b); - rcon = vdupq_n_u8(rcon_val); - - // 更新前两个密钥 - prev_prev_key = prev_key; - prev_key = new_key; - } -} - -// 优化4: 改进AES-256 ECB实现,减少循环开销 -static inline void -AES256_ECB_XWAYS_OPTIMIZED(int ways, const uint8x16_t vsubkeys[15], uint8x16_t state[], unsigned char *out) -{ - // 第一轮:AddRoundKey - for (int j = 0; j < ways; j++) { - state[j] = vaeseq_u8(state[j], vsubkeys[0]); - state[j] = vaesmcq_u8(state[j]); - } - - // 中间轮:SubBytes, ShiftRows, MixColumns, AddRoundKey - for (int i = 1; i < 13; i++) { - uint8x16_t subkey = vsubkeys[i]; - for (int j = 0; j < ways; j++) { - state[j] = vaeseq_u8(state[j], subkey); - state[j] = vaesmcq_u8(state[j]); + for (j = 1; j < 4; j++) { + sk->u32[i][j] = sk->u32[i][j - 1] ^ sk->u32[i - 2][j]; } + + s = AES_sbox_x4(sk->u32[i][3]); + sk->u32[i + 1][0] = s ^ sk->u32[i - 1][0]; + + for (j = 1; j < 4; j++) { + sk->u32[i + 1][j] = sk->u32[i + 1][j - 1] ^ sk->u32[i - 1][j]; + } + + rcon = (rcon << 1) ^ ((rcon >> 7) * 0x11b); } - // 最后一轮:SubBytes, ShiftRows, AddRoundKey - for (int j = 0; j < ways; j++) { - state[j] = vaeseq_u8(state[j], vsubkeys[13]); - state[j] = veorq_u8(state[j], vsubkeys[14]); - vst1q_u8(out + j * 16, state[j]); + s = AES_sbox_x4(sk->u32[13][3]); + sk->u32[14][0] = ROTR32(s, 8) ^ rcon ^ sk->u32[12][0]; + + for (j = 1; j < 4; j++) { + sk->u32[14][j] = sk->u32[14][j - 1] ^ sk->u32[12][j]; } } -// 优化5: 使用向量化的字节交换函数 -static inline void -bswap128_vectorized(uint8x16_t *v) -{ - // 使用vrev64q_u8和vtrn1q_u8等指令优化字节交换 - uint8x16_t reversed = vrev64q_u8(*v); - uint8x8x2_t halves = vtrn_u8(vget_low_u8(reversed), vget_high_u8(reversed)); - *v = vcombine_u8(halves.val[1], halves.val[0]); -} +#define AES256_ECB_XWAYS(ways, vsubkeys, ctr, out) \ + do { \ + uint8x16_t state[ways]; \ + \ + for (int j = 0; j < ways; j++) { \ + state[j] = vaeseq_u8(ctr[j], vsubkeys[0]); \ + state[j] = vaesmcq_u8(state[j]); \ + } \ + \ + for (int i = 1; i < 13; i++) { \ + for (int j = 0; j < ways; j++) { \ + state[j] = vaeseq_u8(state[j], vsubkeys[i]); \ + state[j] = vaesmcq_u8(state[j]); \ + } \ + } \ + \ + for (int j = 0; j < ways; j++) { \ + state[j] = vaeseq_u8(state[j], vsubkeys[13]); \ + state[j] = veorq_u8(state[j], vsubkeys[14]); \ + vst1q_u8(out + j * 16, state[j]); \ + } \ + } while (0); -// 优化6: 改进计数器增量函数 -static inline void -add_to_V_optimized(unsigned char V[], int incr) -{ - // 使用向量化操作增加计数器 - uint8x16_t vV = vld1q_u8(V); - uint64x2_t vV64 = vreinterpretq_u64_u8(vV); - - // 处理64位增量 - uint64x2_t incr64 = vdupq_n_u64((uint64_t)incr); - vV64 = vaddq_u64(vV64, incr64); - - // 如果低64位溢出,增加高64位 - uint64_t low = vgetq_lane_u64(vV64, 0); - if (low < (uint64_t)incr) { - uint64_t high = vgetq_lane_u64(vV64, 1); - vV64 = vsetq_lane_u64(high + 1, vV64, 1); - } - - vV = vreinterpretq_u8_u64(vV64); - bswap128_vectorized(&vV); - vst1q_u8(V, vV); -} - -// 动态确定最优WAYS值 -static int -determine_optimal_ways(unsigned long long data_size) -{ - // 根据数据大小选择最优的WAYS值 - // 这些阈值可以通过实际测试优化 - - // 小数据块: 使用4路并行 - if (data_size < 256) { - return 4; - } - // 中等数据块: 使用6路并行 - else if (data_size < 1024) { - return 6; - } - // 大数据块: 使用8路并行 - else if (data_size < 4096) { - return 8; - } - // 超大数据块: 使用10路并行,但不超过12 - else { - return 8; - } -} - -// 优化7: 改进DRBG更新函数,减少内存操作 +// subkeys - subkeys for AES-256 +// ctr - a 128-bit plaintext value +// buffer - a 128-bit ciphertext value static void -AES256_CTR_DRBG_Update_Optimized(unsigned char *provided_data, - const uint8x16_t vsubkeys[15], - unsigned char *Key, - unsigned char *V) +AES256_ECB(uint8x16_t vsubkeys[15], uint8x16_t ctr, unsigned char *buffer) +{ + AES256_ECB_XWAYS(1, vsubkeys, (&ctr), buffer); +} + +// vsubkeys - subkeys for AES-256 +// ctr - an array of 3 x 128-bit plaintext value +// buffer - an array of 3 x 128-bit ciphertext value +static void +AES256_ECB_x3(uint8x16_t vsubkeys[15], uint8x16_t ctr[3], unsigned char *buffer) +{ + AES256_ECB_XWAYS(3, vsubkeys, ctr, buffer); +} + +static void +bswap128(__uint128_t *x) +{ + uint64_t *x64 = (uint64_t *)x; + + uint64_t t = x64[0]; + x64[0] = x64[1]; + x64[1] = t; + + x64[0] = __builtin_bswap64(x64[0]); + x64[1] = __builtin_bswap64(x64[1]); +} + +static void +add_to_V(unsigned char V[], int incr) +{ + __uint128_t *V128 = (__uint128_t *)V; + bswap128(V128); + (*V128) += incr; + bswap128(V128); +} + +static void +AES256_CTR_DRBG_Update(unsigned char *provided_data, uint8x16_t vsubkeys[15], unsigned char *Key, unsigned char *V) { unsigned char temp[48]; + __uint128_t V128, t; + uint64x2_t vV[3]; - // 使用向量化操作处理计数器 - uint8x16_t vV = vld1q_u8(V); - uint8x16_t vV1 = vV; - uint8x16_t vV2 = vV; - uint8x16_t vV3 = vV; + memcpy(&V128, DRBG_ctx.V, sizeof(V128)); - // 增量计数器值 - uint64x2_t inc = vdupq_n_u64(1); - uint64x2_t vV64 = vreinterpretq_u64_u8(vV1); - vV64 = vaddq_u64(vV64, inc); - vV1 = vreinterpretq_u8_u64(vV64); + bswap128(&V128); - vV64 = vreinterpretq_u64_u8(vV2); - vV64 = vaddq_u64(vV64, vdupq_n_u64(2)); - vV2 = vreinterpretq_u8_u64(vV64); - - vV64 = vreinterpretq_u64_u8(vV3); - vV64 = vaddq_u64(vV64, vdupq_n_u64(3)); - vV3 = vreinterpretq_u8_u64(vV64); - - // 批量AES加密 - uint8x16_t vV_array[3] = { vV1, vV2, vV3 }; - AES256_ECB_XWAYS_OPTIMIZED(3, vsubkeys, vV_array, temp); - - // 如果有提供的数据,进行XOR操作 - if (provided_data != NULL) { - uint8x16_t vData = vld1q_u8(provided_data); - uint8x16_t vTemp = vld1q_u8(temp); - vst1q_u8(temp, veorq_u8(vTemp, vData)); - - vData = vld1q_u8(provided_data + 16); - vTemp = vld1q_u8(temp + 16); - vst1q_u8(temp + 16, veorq_u8(vTemp, vData)); - - vData = vld1q_u8(provided_data + 32); - vTemp = vld1q_u8(temp + 32); - vst1q_u8(temp + 32, veorq_u8(vTemp, vData)); + for (int j = 0; j < 3; j++) { + V128++; + t = V128; + bswap128(&t); + vV[j] = vld1q_u64((uint64_t *)&t); } - // 更新密钥和V + AES256_ECB_x3(vsubkeys, (uint8x16_t *)vV, temp); + + // if (provided_data != NULL) + // for (int i = 0; i < 48; i++) + // temp[i] ^= provided_data[i]; + if (provided_data != NULL) { + // 使用 SIMD 进行批量 XOR 操作 + uint8x16_t *temp_vec = (uint8x16_t *)temp; + uint8x16_t *prov_vec = (uint8x16_t *)provided_data; + + temp_vec[0] = veorq_u8(temp_vec[0], prov_vec[0]); + temp_vec[1] = veorq_u8(temp_vec[1], prov_vec[1]); + temp_vec[2] = veorq_u8(temp_vec[2], prov_vec[2]); + } memcpy(Key, temp, 32); memcpy(V, temp + 32, 16); - add_to_V_optimized(DRBG_ctx.V, 1); + add_to_V(DRBG_ctx.V, 1); } -// 优化8: 改进初始化函数 void -randombytes_init_arm64crypto_optimized(unsigned char *entropy_input, - unsigned char *personalization_string, - int security_strength) +randombytes_init_arm64crypto(unsigned char *entropy_input, unsigned char *personalization_string, int security_strength) { (void)security_strength; @@ -221,177 +172,133 @@ randombytes_init_arm64crypto_optimized(unsigned char *entropy_input, uint8_t subkeys[15][16]; uint8x16_t vsubkeys[15]; - // 使用向量化操作初始化种子材料 + memcpy(seed_material, entropy_input, 48); + // if (personalization_string) + // for (int i = 0; i < 48; i++) + // seed_material[i] ^= personalization_string[i]; if (personalization_string) { - uint8x16_t vEntropy = vld1q_u8(entropy_input); - uint8x16_t vPersonal = vld1q_u8(personalization_string); - vst1q_u8(seed_material, veorq_u8(vEntropy, vPersonal)); + // 使用 SIMD 加速 XOR 操作 + uint8x16_t *seed_vec = (uint8x16_t *)seed_material; + uint8x16_t *pers_vec = (uint8x16_t *)personalization_string; - vEntropy = vld1q_u8(entropy_input + 16); - vPersonal = vld1q_u8(personalization_string + 16); - vst1q_u8(seed_material + 16, veorq_u8(vEntropy, vPersonal)); - - vEntropy = vld1q_u8(entropy_input + 32); - vPersonal = vld1q_u8(personalization_string + 32); - vst1q_u8(seed_material + 32, veorq_u8(vEntropy, vPersonal)); - } else { - memcpy(seed_material, entropy_input, 48); + seed_vec[0] = veorq_u8(seed_vec[0], pers_vec[0]); + seed_vec[1] = veorq_u8(seed_vec[1], pers_vec[1]); + seed_vec[2] = veorq_u8(seed_vec[2], pers_vec[2]); } - // 初始化密钥和V为零 - uint8x16_t vZero = vdupq_n_u8(0); - vst1q_u8(DRBG_ctx.Key, vZero); - vst1q_u8(DRBG_ctx.Key + 16, vZero); - vst1q_u8(DRBG_ctx.V, vZero); + memset(DRBG_ctx.Key, 0x00, 32); + memset(DRBG_ctx.V, 0x00, 16); - // 生成子密钥 AES256_key_schedule(subkeys, DRBG_ctx.Key); for (int i = 0; i < 15; i++) { vsubkeys[i] = vld1q_u8(subkeys[i]); } - // 更新DRBG状态 - AES256_CTR_DRBG_Update_Optimized(seed_material, vsubkeys, DRBG_ctx.Key, DRBG_ctx.V); + AES256_CTR_DRBG_Update(seed_material, vsubkeys, DRBG_ctx.Key, DRBG_ctx.V); DRBG_ctx.reseed_counter = 1; } -// 优化9: 动态选择WAYS值的主随机数生成函数 +#define WAYS 4 + int -randombytes_arm64crypto_optimized(unsigned char *x, unsigned long long xlen) +randombytes_arm64crypto(unsigned char *x, unsigned long long xlen) { uint8_t subkeys[15][16]; unsigned char block[16]; + __uint128_t V[WAYS], Vle[WAYS]; + uint8x16x4_t vV; uint8x16_t vsubkeys[15]; - // 预先计算子密钥 AES256_key_schedule(subkeys, DRBG_ctx.Key); + for (int j = 0; j < 15; j++) { vsubkeys[j] = vld1q_u8(subkeys[j]); } - // 根据数据大小动态确定最优的WAYS值 - int ways = determine_optimal_ways(xlen); - - // 处理大块数据(使用动态确定的WAYS值) - if (xlen >= ways * 16) { - // 使用动态分配的数组来适应不同的WAYS值 - uint8x16_t vV_array[12]; // 最多支持12路并行 - uint8x16_t vV = vld1q_u8(DRBG_ctx.V); - - // 初始化计数器值 - vV_array[0] = vV; - for (int j = 1; j < ways; j++) { - uint64x2_t vV64 = vreinterpretq_u64_u8(vV); - uint64x2_t inc = vdupq_n_u64(j); - vV64 = vaddq_u64(vV64, inc); - vV_array[j] = vreinterpretq_u8_u64(vV64); - } - - // 处理大块数据 - while (xlen >= ways * 16) { - // 批量AES加密 - AES256_ECB_XWAYS_OPTIMIZED(ways, vsubkeys, vV_array, x); - - // 更新计数器值 - uint64x2_t vV64 = vreinterpretq_u64_u8(vV_array[ways - 1]); - uint64x2_t inc = vdupq_n_u64(ways); - vV64 = vaddq_u64(vV64, inc); - - for (int j = 0; j < ways; j++) { - uint64x2_t current = vreinterpretq_u64_u8(vV_array[j]); - current = vaddq_u64(current, inc); - vV_array[j] = vreinterpretq_u8_u64(current); - } - - x += ways * 16; - xlen -= ways * 16; - } - - // 更新V为最后一个计数器值 - vV = vV_array[ways - 1]; - vst1q_u8(DRBG_ctx.V, vV); + memcpy(&Vle[0], DRBG_ctx.V, sizeof(Vle[0])); + V[0] = Vle[0]; + vV.val[0] = vld1q_u8((uint8_t *)&V[0]); + bswap128(&Vle[0]); + for (int j = 1; j < WAYS; j++) { + Vle[j] = Vle[j - 1] + 1; + V[j] = Vle[j]; + bswap128(&V[j]); + vV.val[j] = vld1q_u8((uint8_t *)&V[j]); } - // 处理剩余数据(小量数据) - while (xlen > 0) { - uint8x16_t vV = vld1q_u8(DRBG_ctx.V); + int entered_fast_path = (xlen >= WAYS * 16) ? 1 : 0; + while (xlen >= WAYS * 16) { + // 添加预取指令 + __builtin_prefetch(&x[64], 1, 3); + for (int j = 0; j < WAYS; j++) { + Vle[j] += 4; + } + + for (int j = 0; j < WAYS; j++) { + vV.val[j] = vaeseq_u8(vV.val[j], vsubkeys[0]); + vV.val[j] = vaesmcq_u8(vV.val[j]); + } + + for (int i = 1; i < 13; i++) { + for (int j = 0; j < WAYS; j++) { + vV.val[j] = vaeseq_u8(vV.val[j], vsubkeys[i]); + vV.val[j] = vaesmcq_u8(vV.val[j]); + } + } + + for (int j = 0; j < WAYS; j++) { + vV.val[j] = vaeseq_u8(vV.val[j], vsubkeys[13]); + vV.val[j] = veorq_u8(vV.val[j], vsubkeys[14]); + vst1q_u8(x + j * 16, vV.val[j]); + } + + for (int j = 0; j < WAYS; j++) { + V[j] = Vle[j]; + bswap128(&V[j]); + } + + vV = vld1q_u8_x4((uint8_t *)V); + + x += WAYS * 16; + xlen -= WAYS * 16; + } + + if (entered_fast_path && xlen == 0) { + asm volatile("" : "+r,m"(Vle[3]) : : "memory"); + V[0] = Vle[3] - 4; + bswap128(&V[0]); + } + + while (xlen > 0) { if (xlen > 16) { - uint8x16_t state = vV; - AES256_ECB_XWAYS_OPTIMIZED(1, vsubkeys, &state, x); + AES256_ECB(vsubkeys, vld1q_u8((uint8_t *)&V[0]), x); x += 16; xlen -= 16; + + Vle[0]++; + V[0] = Vle[0]; + bswap128(&V[0]); } else { - uint8x16_t state = vV; - AES256_ECB_XWAYS_OPTIMIZED(1, vsubkeys, &state, block); + AES256_ECB(vsubkeys, vld1q_u8((uint8_t *)&V[0]), block); memcpy(x, block, xlen); xlen = 0; } - - // 增量V - add_to_V_optimized(DRBG_ctx.V, 1); } - // 更新DRBG状态 - AES256_CTR_DRBG_Update_Optimized(NULL, vsubkeys, DRBG_ctx.Key, DRBG_ctx.V); + memcpy(DRBG_ctx.V, &V[0], sizeof(V[0])); + + AES256_CTR_DRBG_Update(NULL, vsubkeys, DRBG_ctx.Key, DRBG_ctx.V); DRBG_ctx.reseed_counter++; return RNG_SUCCESS; } -// // 高级版本:带有自适应学习能力的随机数生成函数 -// int -// randombytes_arm64crypto_adaptive(unsigned char *x, unsigned long long xlen) -// { -// // 静态变量用于记录历史性能数据 -// static unsigned long long total_bytes_processed = 0; -// static unsigned long long total_time_used = 0; // 假设有时间测量机制 - -// uint8_t subkeys[15][16]; -// uint8x16_t vsubkeys[15]; - -// // 预先计算子密钥 -// AES256_key_schedule(subkeys, DRBG_ctx.Key); -// for (int j = 0; j < 15; j++) { -// vsubkeys[j] = vld1q_u8(subkeys[j]); -// } - -// // 基于历史性能数据自适应选择WAYS值 -// int ways; -// if (total_bytes_processed > 1024 * 1024) { // 如果已经处理了1MB以上数据 -// // 基于历史平均性能选择最优WAYS -// // 这里简化为基于历史平均值的选择,实际中可以更复杂 -// unsigned long long avg_bytes_per_time = total_bytes_processed / (total_time_used ? total_time_used : 1); - -// if (avg_bytes_per_time > 1000) { // 假设阈值 -// ways = (xlen > 4096) ? 12 : 8; // 高性能情况下使用更高并行度 -// } else { -// ways = (xlen > 1024) ? 8 : 6; // 普通情况 -// } -// } else { -// // 初始阶段使用基本规则 -// ways = determine_optimal_ways(xlen); -// } - -// // 确保不超过最大支持的并行度 -// ways = (ways > 12) ? 12 : ways; - -// // 这里开始实际的处理,与前面函数类似,但使用动态确定的ways值 -// // ... (实现与randombytes_arm64crypto_optimized类似) - -// // 更新历史统计 -// total_bytes_processed += xlen; -// // total_time_used += elapsed_time; // 需要实际测量时间 - -// return RNG_SUCCESS; -// } - -// 包装函数 #ifdef RANDOMBYTES_ARM64CRYPTO int randombytes(unsigned char *random_array, unsigned long long nbytes) { - int ret = randombytes_arm64crypto_optimized(random_array, nbytes); + int ret = randombytes_arm64crypto(random_array, nbytes); #ifdef ENABLE_CT_TESTING VALGRIND_MAKE_MEM_UNDEFINED(random_array, ret); #endif @@ -401,6 +308,6 @@ randombytes(unsigned char *random_array, unsigned long long nbytes) void randombytes_init(unsigned char *entropy_input, unsigned char *personalization_string, int security_strength) { - randombytes_init_arm64crypto_optimized(entropy_input, personalization_string, security_strength); + randombytes_init_arm64crypto(entropy_input, personalization_string, security_strength); } #endif