Merge reviewed explicit constant-zero derivative seeds

This commit is contained in:
KOKO\Mimi
2026-10-14 22:35:15 +09:00
2 changed files with 57 additions and 4 deletions
@@ -313,3 +313,48 @@ worker/consumer FP·policy 일치는 실제 출력이 없다. 별도 diagnostic-
계획은 parent true-trial-production-hit-trace.md에 기록했다. 명시적인 local Constant0
builder seed 후보는 explicit-zero-seed-read-plan.md의 읽기 계획이며 아직 구현하거나
실행하지 않았다. 전체 shell100초 목표는 미달이며 최종 전체/reference 검증도 남아 있다.
## 명시적인 local 영 seed의 provenance 보존
Identity의6 offdiagonal, Skew의3 diagonal과 Matrix×Matrix/Matrix×Vector Multiply의
9/3 ordered accumulator만 Constant(0.0)으로 초기화했다. 세 matrix builder는 private
ConstantZeroMatrix를 공유하고 vector는 세 fresh Constant0을 사용한다. 기존 product/
add 순서와 호출, Default Jet/Variable false, ExpSkew increment identity, 다른 seed/
direct derivative write, ordinary MKL, API/precision/physics/gates/진단은 유지한다.
수정은 nonlinear_mitc4_shell.cpp의12삽입4삭제다.
이 seed는 실제 정의된 numeric +0/영 도함수/null H에만 true provenance를 부여한다.
기존 Constant guard가 finite value/coeff/gradient와 implicit/allocated H를 구별하므로
Inf/NaN×0 또는 singular Compose/Atan2 실패를 지우지 않는다. 입력 allocated alias는
유지하고 fresh zero가 입력 alias를 반환하지 않는다. 후속 allocated-zero가 implicit
zero가 될 수 있어 arbitrary private Jet copy/write의 alias 동등성까지 주장하지 않는다.
현재 readonly derivative 소비자와 승인된 H numeric0 부호 의미에 한정한다.
독립 actual source 검토 PASS를 받은 고정 manifest
700068D3C55DD5633BE51D3D0DD15562763E1788C9A4CADA667BD4ACA822E484에서
corrected-prefix Debug3 edges build native0/2.90초, 실제 shell header deps26을 확인했다.
Actual production TU의 builder15+기존 frozen Jet33 oracle가 native0/0.08초로 통과했고
H 영 부호 차이0이었다. Frozen0e5 전체 TU와 current 전체 TU의7 실제 응답·실패·재실행
probe도 각각 native0(0.40/0.39초)이며20,126개 record의 identity/비영/diagnostic과
H numeric0 부호까지 동일했다. Raw 출력 두 SHA는
04153B2088E5C87FDBF043659028DBD17114C72775BEA59B984EEBB554163D5F다.
이 비교는 frozen TU를 별도 fresh compile하고 동일한 변경 없는 header/common library
의존성에 연결한 callback oracle다. Frozen object를 복사하거나 전체 solver의 혼합
source PASS로 사용하지 않는다. Frozen TU SHA8794F4D6D5C8F6988064F4651BABF0680525B86EDB5AC2120BFB4F94B4F2EF44,
current TU SHA74BC4079C9FFDB4083F9A63CAE56493A8D1F207BE2984919B04815C981AA7A03과
실제 compiler/argv/native/library/driver/binary/output hash를 parent
zero-seed-source.json/zero-seed-debug-native.json/zero-seed-debug-built-hashes.json에
보존했다. Related CTest57/57도 native0(CTest24.06초/native24.10초)이다.
마지막 wrapper hash 수집은 잘못 복제한 jet-zero-seed-debug.exe 이름 때문에 외부
PowerShell1로 끝났다. 실제 native 명령10개는 모두0이었고 실제 파일 zero-seed-debug.exe
및 frozen/current probe hash만 다시 수집했다(metadata-only native0, 검사 재실행 없음).
오류 기록과 원래 wrapper는 별도로 보존했다. Production1/dependency9/oracle8 hash
일치와 관련 프로세스0을 확인하고 CPU를 반환했다.
Library SHA E6B0B4DD96093F1568A4A783E004EC7C205C33550413CD1262B7EA59A49926B2,
unit SHA5725E2E82B4A0AF530F68D9D9BF3ADF685C27CADF6A0F2B106A35A48147360C4다.
이번 source의 Release/whole-model/profile/절약률/전체 Debug/reference/C08는 미실행이며
전체 shell100초 목표를 통과한 것으로 표시하지 않는다. 다음 계측은 원본에서 cache
실제 경로와 새 병목을 함께 확인하는 최소 SW VTune 계획으로 별도 결정한다.
+12 -4
View File
@@ -859,9 +859,17 @@ JetVector3 Cross(const JetVector3& left, const JetVector3& right) {
left[0U] * right[1U] - left[1U] * right[0U]};
}
/// @brief Seeds only explicitly zero matrix entries with constant provenance.
JetMatrix3 ConstantZeroMatrix() {
JetMatrix3 result{};
for (auto& row : result)
for (auto& entry : row) entry = Constant(0.0);
return result;
}
/// @brief Builds a Jet identity matrix.
JetMatrix3 Identity() {
JetMatrix3 result{};
JetMatrix3 result = ConstantZeroMatrix();
for (std::size_t index = 0U; index < 3U; ++index) {
result[index][index] = Constant(1.0);
}
@@ -870,7 +878,7 @@ JetMatrix3 Identity() {
/// @brief Forms a skew matrix from a Jet vector.
JetMatrix3 Skew(const JetVector3& value) {
JetMatrix3 result{};
JetMatrix3 result = ConstantZeroMatrix();
result[0U][1U] = -1.0 * value[2U];
result[0U][2U] = value[1U];
result[1U][0U] = value[2U];
@@ -882,7 +890,7 @@ JetMatrix3 Skew(const JetVector3& value) {
/// @brief Multiplies two three-by-three Jet matrices.
JetMatrix3 Multiply(const JetMatrix3& left, const JetMatrix3& right) {
JetMatrix3 result{};
JetMatrix3 result = ConstantZeroMatrix();
for (std::size_t row = 0U; row < 3U; ++row) {
for (std::size_t column = 0U; column < 3U; ++column) {
for (std::size_t index = 0U; index < 3U; ++index) {
@@ -896,7 +904,7 @@ JetMatrix3 Multiply(const JetMatrix3& left, const JetMatrix3& right) {
/// @brief Multiplies a Jet matrix by a Jet vector.
JetVector3 Multiply(const JetMatrix3& matrix, const JetVector3& vector) {
JetVector3 result{};
JetVector3 result{Constant(0.0), Constant(0.0), Constant(0.0)};
for (std::size_t row = 0U; row < 3U; ++row) {
for (std::size_t column = 0U; column < 3U; ++column) {
result[row] = result[row] + matrix[row][column] * vector[column];