Furiosa Opt 0.3에서 RawInt8 FeedBuffer lowering 실패

cargo-furiosa-opt 0.3.0을 사용해 RNGD용 INT8 contraction 커널을 빌드하고 있습니다.

Rust 컴파일과 Opt typecheck backend는 정상 통과하지만, --backend npu로 artifact를 생성하면 VISA 단계에서 실패합니다.

문제가 발생하는 연산 흐름은 다음과 같습니다.

fetch()
.fetch_cast::()
.collect()
.contract_outer()

NPU compiler가 이 연산을 multi-shape FeedBuffer로 lowering한 뒤 아래 오류를 반환합니다.

OperationUnitArgs::try_into failed: FeedBuffer {
element_type: RawInt8,
collect_flits: Flit2,

}

Caused by:
unsupported element type

Location:
crates/npu-ir/tu-ops/src/renegade/
feed_buffer_multi_shape/verify.rs:19:9

fetch() API 자체는 i8을 허용하고 fetch_cast::()도 유효한 identity cast이므로, Rust 타입 검사 단계의 문제는 아닌 것으로 보입니다. 실제 실패 지점은 NPU backend의 RawInt8 FeedBuffer lowering 단계입니다.

동일한 tensor mapping과 contraction 구조를 BF16으로 변경하면 EDF 생성과 실제 NPU 실행까지 정상 통과합니다. i32 reduction 커널도 성공하며, RawInt8 경로를 사용하는 커널들만 동일한 오류로 실패합니다.

확인하고 싶은 내용은 다음과 같습니다.

  1. Opt 0.3의 feed_buffer_multi_shape 경로에서 RawInt8이 의도적으로 지원되지 않는 것인지
  2. INT8 contraction을 위해 다른 fetch/collect packet mapping을 사용해야 하는지
  3. 현재 지원되는 INT8 fetch → collect → contract 예제나 권장 패턴이 있는지
  4. 이 문제가 수정된 compiler 버전 또는 예정된 패치가 있는지

참고로 이 오류는 NPU 장치를 열기 전 artifact 컴파일 단계에서 발생하므로, 드라이버/펌웨어 버전 불일치 문제와는 별개의 현상으로 판단하고 있습니다. 감사합니다!

안녕하세요, 먼저 furiosa-opt에 관심 가져주셔서 감사합니다.

혹시 minimal reproducible example을 코드로 공유해주실 수 있으실지 여쭙습니다. 저희가 면밀히 살펴보고 다시 연락드리겠습니다.

1 Like

안녕하세요. 먼저 빠른 답변 감사합니다.

커널에서 컴파일 에러를 발생시키는 부분은 다음 블록입니다.

.begin(b_dm.view())
.fetch::<m![N % 8, N / 8 % 4], m![K]>()
.fetch_cast::()
.collect::<m![N % 8, N / 8 % 4, K / 32], m![K % 32]>()
.to_trf(TrfAddress::Full);

이 오류는 장치 open이나 dispatch 이전, NPU artifact 생성의 visa lowering 단계에서 발생합니다.

원래 프로젝트에서는 동일한 lane/time broadcast 형태의 BF16 kernel은 .bin 생성과 NPU 실행이 정상적으로 됩니다. 현재까지 확인한 바로는 feed_buffer_multi_shape verifier가 RawInt8을 거부하는 부분이 직접적인 원인으로 보입니다.

다음 사항을 확인 부탁드립니다.

  1. furiosa-opt 0.3에서 RawInt8의 multi-shape feed가 지원 대상인지
  2. INT8 contraction을 표현할 수 있는 권장 fetch/collect mapping 또는 우회 방법이 있는지
  3. kernel lowering 실패 시 .fail만 생성하면서 전체 build가 종료코드 0을 반환하는 것이 의도된 동작인지

추가 로그나 원본 kernel code가 필요하시다면 전달드리겠습니다. 감사합니다.

안녕하세요, i8 contraction이 불가능한 해당 문제를 인지하였고 fix에 해당하는 패치가 다음 릴리즈에서 반영될 예정입니다. 감사합니다.

안녕하세요, 해당 문제 (i8 contraction) 을 해결하는 furiosa-opt v0.4.0이 7월 20일자로 릴리즈 되었습니다. furiosa-opt 버전을 업그레이드하고 확인 부탁드립니다!

1 Like

안녕하세요.

opt 버전 업그레이드 후 INT8 Contraction 잘 작동하는 것 확인했습니다.

빠른 조치 감사합니다.