crates/pytorch/utils/src/translate/ops.rs#1
Needs you. The proposals disagreed, and the classifier expected both sides kept.
// ATen accumulates in the declared output dtype: bool and narrow
// integers promote to i64 by default, and dtype= overrides that.
// Casting only the scan result would lose carries or overflow first.
let x = super::convert(x, self.compute_dtype(node)?);// ATen casts BEFORE scanning: absent dtype promotes bool/integer
// inputs to int64; an explicit dtype overrides that default. PT2's
// output metadata has already resolved both cases, even when the
// exported node has no dtype argument or explicit cast. Luminal's
// scans themselves preserve their operand dtype.
let x = super::convert(x, self.output_meta_dtype(node)?);Proposed resolution
What each resolver proposed
Dots are AI agent votes. Rules, which need no model, are named on the right.
Keep your fork's sideProposed
2 of 3 modelsKeep fork rule// ATen accumulates in the declared output dtype: bool and narrow // integers promote to i64 by default, and dtype= overrides that. // Casting only the scan result would lose carries or overflow first. let x = super::convert(x, self.compute_dtype(node)?);Take upstream's side
1 of 3 modelsTake upstream rule// ATen casts BEFORE scanning: absent dtype promotes bool/integer // inputs to int64; an explicit dtype overrides that default. PT2's // output metadata has already resolved both cases, even when the // exported node has no dtype argument or explicit cast. Luminal's // scans themselves preserve their operand dtype. let x = super::convert(x, self.output_meta_dtype(node)?);