ADR: translate adr-ko/ to Korean, fix ADR-0013 slug, refine Status check
Follow-up to the bilingual-structure commit: docs/adr-ko/ now holds only Korean versions (24 files translated from English placeholders), ADR-0013 slug uses kebab-case in both folders, and the verify tool allows translated parenthetical commentary in the Status block. - Translate 24 English files in docs/adr-ko/ to Korean. The previous bilingual-structure commit had left these as English copies because their source content was already English; this commit fulfills the policy that docs/adr-ko/ contains only Korean. - Rename ADR-0013 in both adr/ and adr-ko/ from ver-verification_strategy.md to ver-verification-strategy.md (kebab-case consistency with other ADRs). - CLAUDE.md (ADR Translation Discipline): clarify that only the Status lifecycle keyword (Accepted / Proposed / Stub / Draft / Superseded by ADR-NNNN / Merged into ADR-NNNN) must match across EN and KO; parenthetical commentary and trailing list items may be translated. - tools/verify_adr_lang_pairs.py: replace byte-equal Status check with normalize_status_keyword() which strips parenthetical commentary and takes only the first non-empty line. - tests/test_verify_adr_lang_pairs.py: update existing test names, add coverage for translated parenthetical, translated trailing list, and Superseded-by-NNNN keyword equality. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# ADR-0008: Tensor Deployment and Allocation (Host Allocator, PA-first)
|
||||
# ADR-0008: 텐서 배포 및 할당 (호스트 할당기, PA 우선)
|
||||
|
||||
## Status
|
||||
|
||||
@@ -6,95 +6,95 @@ Accepted
|
||||
|
||||
## Context
|
||||
|
||||
Benchmarks require PyTorch-like tensor semantics:
|
||||
벤치마크는 PyTorch와 유사한 텐서 시맨틱을 요구한다:
|
||||
|
||||
- tensor creation (empty, fill),
|
||||
- deployment to accelerator devices (tensor.to()).
|
||||
- 텐서 생성 (empty, fill),
|
||||
- 가속기 디바이스로의 배포 (tensor.to()).
|
||||
|
||||
In the realistic system, host software manages allocation/mapping and installs
|
||||
mappings for DMA/MMU. For Phase 0 we simplify (ADR-0011):
|
||||
현실적인 시스템에서는 호스트 소프트웨어가 할당·매핑을 관리하고 DMA/MMU
|
||||
매핑을 설치한다. Phase 0에서는 (ADR-0011) 다음으로 단순화한다:
|
||||
|
||||
- device memory operations use PA only,
|
||||
- VA/MMU/IOMMU is not modeled.
|
||||
- 디바이스 메모리 동작은 PA만 사용,
|
||||
- VA/MMU/IOMMU는 모델링하지 않는다.
|
||||
|
||||
To keep the host↔device interface minimal, we avoid a separate
|
||||
AllocateTensorMeta message. Instead, host allocation produces a PA shard map
|
||||
that is used directly by MemoryWrite/Read and KernelLaunch.
|
||||
호스트↔디바이스 인터페이스를 최소로 유지하기 위해 별도의
|
||||
AllocateTensorMeta 메시지는 피한다. 대신 호스트 할당은 PA 샤드 맵을
|
||||
생성하여 MemoryWrite/Read와 KernelLaunch가 직접 사용한다.
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
### D1. Tensor is a host-owned handle with PA shard mapping
|
||||
### D1. Tensor는 PA 샤드 매핑을 가진 호스트 소유 핸들
|
||||
|
||||
A Tensor object is a host-owned handle that encapsulates:
|
||||
Tensor 객체는 다음을 캡슐화하는 호스트 소유 핸들이다:
|
||||
|
||||
- shape and dtype,
|
||||
- initialization intent,
|
||||
- device placement and allocation metadata as a PA shard map.
|
||||
- shape과 dtype,
|
||||
- 초기화 의도,
|
||||
- PA 샤드 맵 형태의 디바이스 배치 및 할당 메타데이터.
|
||||
|
||||
After deployment, the Tensor handle MUST contain:
|
||||
배포 이후 Tensor 핸들은 다음을 포함해야 한다:
|
||||
|
||||
- a list of shards, each with (sip,cube,pe,pa,nbytes,offset_bytes).
|
||||
- 각각 (sip, cube, pe, pa, nbytes, offset_bytes)를 가진 샤드 리스트.
|
||||
|
||||
This PA shard mapping is the single source of truth for kernel argument binding.
|
||||
이 PA 샤드 매핑이 커널 인수 바인딩의 단일 진실 원천이다.
|
||||
|
||||
---
|
||||
|
||||
### D2. Deployment uses a host allocator (Phase 0)
|
||||
### D2. 배포는 호스트 할당기를 사용한다 (Phase 0)
|
||||
|
||||
In Phase 0, tensor deployment produces PA shard mappings via a host allocator:
|
||||
Phase 0에서 텐서 배포는 호스트 할당기를 통해 PA 샤드 매핑을 생성한다:
|
||||
|
||||
- placement (split/replicate/hybrid) is decided by a DP policy,
|
||||
- allocation assigns PA ranges at the PE level and returns shard mappings,
|
||||
- the Tensor handle stores the resulting shard list deterministically.
|
||||
- 배치(split/replicate/hybrid)는 DP 정책에 의해 결정,
|
||||
- 할당은 PE 수준에서 PA 범위를 부여하고 샤드 매핑을 반환,
|
||||
- Tensor 핸들은 결정론적으로 결과 샤드 리스트를 저장.
|
||||
|
||||
No separate host-visible device allocation RPC is required in Phase 0.
|
||||
Phase 0에서는 호스트가 보는 별도의 디바이스 할당 RPC는 필요하지 않다.
|
||||
|
||||
---
|
||||
|
||||
### D3. Data initialization and transfer uses MemoryWrite/Read only
|
||||
### D3. 데이터 초기화와 전송은 MemoryWrite/Read만 사용
|
||||
|
||||
Any data initialization or transfer implied by a tensor (e.g., fill, copy)
|
||||
MUST be represented using Host ↔ IO_CPU messages only:
|
||||
텐서가 함의하는 모든 데이터 초기화나 전송(예: fill, copy)은
|
||||
Host ↔ IO_CPU 메시지만으로 표현되어야 한다:
|
||||
|
||||
- MemoryWrite
|
||||
- MemoryRead
|
||||
|
||||
Rules:
|
||||
규칙:
|
||||
|
||||
- MemoryWrite/Read MUST reference PA + (sip,cube,pe) tags (ADR-0012).
|
||||
- Allocation metadata MUST NOT be embedded as a separate allocation message.
|
||||
- Bulk tensor data MUST NOT be embedded in Phase 0 messages.
|
||||
- MemoryWrite/Read는 PA + (sip, cube, pe) 태그를 참조해야 한다 (ADR-0012).
|
||||
- 할당 메타데이터는 별도의 할당 메시지로 임베드되어서는 안 된다.
|
||||
- 대량 텐서 데이터는 Phase 0 메시지에 임베드되어서는 안 된다.
|
||||
|
||||
The simulation engine schedules MemoryWrite/Read through the graph so that
|
||||
latency is computed by explicit traversal.
|
||||
시뮬레이션 엔진은 MemoryWrite/Read를 그래프를 통해 스케줄하므로 레이턴시는
|
||||
명시적 순회로 계산된다.
|
||||
|
||||
---
|
||||
|
||||
### D4. Extension path (non-breaking)
|
||||
### D4. 확장 경로 (호환성 유지)
|
||||
|
||||
Future ADRs MAY introduce optional VA/MMU/IOMMU modeling by adding:
|
||||
향후 ADR이 다음을 추가하여 선택적인 VA/MMU/IOMMU 모델링을 도입할 수 있다:
|
||||
|
||||
- virtual addressing in tensor handles,
|
||||
- mapping install steps,
|
||||
- translation latency/page granularity.
|
||||
- 텐서 핸들에 가상 주소,
|
||||
- 매핑 설치 단계,
|
||||
- 변환 레이턴시·페이지 granularity.
|
||||
|
||||
The Phase 0 PA shard map remains a valid fast-path configuration.
|
||||
Phase 0의 PA 샤드 맵은 유효한 fast-path 구성으로 유지된다.
|
||||
|
||||
---
|
||||
|
||||
## Consequences
|
||||
|
||||
- Host↔IO_CPU contract remains minimal (MemoryRead/Write + KernelLaunch).
|
||||
- KernelLaunch can pass per-PE data placement explicitly via shard tags.
|
||||
- Early implementation stays simple and testable.
|
||||
- Host↔IO_CPU 계약이 최소(MemoryRead/Write + KernelLaunch)로 유지된다.
|
||||
- KernelLaunch가 샤드 태그를 통해 PE별 데이터 배치를 명시적으로 전달할 수 있다.
|
||||
- 초기 구현이 단순하고 테스트 가능하게 유지된다.
|
||||
|
||||
---
|
||||
|
||||
## Links
|
||||
|
||||
- ADR-0011 (Memory Addressing — PA / VA / LA)
|
||||
- ADR-0012 (Host↔IO_CPU schema)
|
||||
- ADR-0007 (runtime_api vs sim_engine boundaries)
|
||||
- ADR-0009 (Kernel execution)
|
||||
- ADR-0011 (메모리 주소 지정 — PA / VA / LA)
|
||||
- ADR-0012 (Host↔IO_CPU 스키마)
|
||||
- ADR-0007 (runtime_api vs sim_engine 경계)
|
||||
- ADR-0009 (커널 실행)
|
||||
|
||||
Reference in New Issue
Block a user