← 목록
기타 2026-06-16 3KB 읽기 3분

삼진 행렬곱 커널 — CUDA 대응 1단계

개요

젯슨토르 NVIDIA CUDA 대응 자체 스택의 1단계. "효율이 아닌 논리로 압도" — NVIDIA가 FP4 곱셈기 2560개로 미는 행렬곱을, 크라우니는 곱셈기 0개의 삼진 부호누산(W∈{-1,0,+1} 부호별 가/감/스킵)으로 받는다. 같은 진리표가 소프트웨어(VM)와 실리콘(VHDL) 양쪽에서 동일하게 돈다.

무엇을 했는지

  1. 한선씨 커널 삼진행렬곱.한선 작성 — 삼진_내적축(곱셈 없는 MAC) + 삼진_행렬곱(행×열) + 행렬_출력. 평면 row-major(배열 1023 상한 회피), 음수리터럴 0-1, 누산 단순항, import-safe.
  2. VM 검증 3/3 — C1(2x3·3x2)=[4,1,10,1], C2(항등 삼진가중치)=[7,8,9], C3(전부음)=[-24]. 손계산 기대값과 일치.
  3. VHDL 동반 rtl/vhdl/trit_dot.vhd — 한선씨 삼진_내적축 루프와 if/elsif 1:1 (곱셈기 0개). trit_mac.vhd 2비트 인코딩 MAC과 동형.
  4. GHDL 검증 tb_trit_dot.vhd 자가검증 — yA=4, yB=-24, VM 결과와 완전 일치 (PASS).

관련 파일

  • /Users/ef/CrownyOS/crownyc/libs/삼진행렬곱.한선 — 커널 (정본)
  • /Users/ef/CrownyOS/crownyc/rtl/vhdl/trit_dot.vhd — VHDL RTL 동반
  • /Users/ef/CrownyOS/crownyc/rtl/vhdl/tb_trit_dot.vhd — GHDL 테스트벤치
  • VM opcode 동형: crownyc/crownyc_vm_core.c OP_TMAC(463)
  • 기존 MAC 셀: crowny-butler/libs/trit_mac.vhd트릿맥하드.한선
  • 학습DB 패턴: 삼진_행렬곱_곱셈없는matmul, 지식셀 #9647

검증 방법 (재현)

bash# VM
cd /Users/ef/CrownyOS/crownyc && export CROWNY_STD=$PWD/libs
./hanseonc_high /tmp/삼진행렬곱_검증.한선 > /tmp/x.toau && ./crownyc run /tmp/x.toau
# VHDL
cd rtl/vhdl && ghdl -a --std=08 trit_dot.vhd tb_trit_dot.vhd && \
  ghdl -e --std=08 tb_trit_dot && ghdl -r --std=08 tb_trit_dot --stop-time=10ns

잔여 이슈 / 다음 단계

  • 2단계 후보(병렬 fan-out): 삼진_컨볼루션, 삼진_어텐션(softmax는 정수근사 필요), 삼진_레이어놈 — matmul 템플릿 위에 확장.
  • 블록 샤딩: mk / kn / m*n > 1023 시 평면 배열 분할 (상위층). 현재 커널은 단일블록.
  • VHDL 합성판: trit_dot는 integer형(시뮬 정합용). 실 FPGA/ASIC은 trit_mac.vhd의 2비트 인코딩(Frieder-Luk)으로 폭 확정 필요.
  • GPU 디스패치: Blackwell SM 디스패치 계층은 미존재(축2 갭). 현재 전부 CPU VM.
  • 자기개선 루프(축4)·헌법 집사임베딩(축5): 별도 단계.