Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
a2dce77
Start documenting autodiff activities
ZuseZ4 Oct 28, 2025
f4efc37
feat: Add `bit_width` for unsigned `NonZero<T>`
sorairolake Nov 10, 2025
740b8ba
Make SIMD intrinsics available in `const`-contexts
sayantn Nov 3, 2025
47384f7
add check for when span is from macro expansion
Kivooeo Nov 12, 2025
f5892da
add autodiff examples
ZuseZ4 Nov 12, 2025
82ff614
Enable const-testing for the ported SIMD intrinsics
sayantn Nov 16, 2025
754a82d
recommend using a HashMap if a HashSet's second generic parameter doe…
Qelxiros Sep 30, 2025
1cfd0b7
Match <OsString as Debug>::fmt to that of str
tamird Aug 7, 2023
eb84efc
Remove <os::Vars as Debug> workaround
tamird Aug 13, 2023
a25950d
feat: Change return type of `NonZero::bit_width`
sorairolake Nov 18, 2025
0b2e02f
autodiff: update formating, improve examples for the unstable-book
ZuseZ4 Nov 19, 2025
847c422
Rollup merge of #147171 - Qelxiros:hashmap_diag, r=fee1-dead
matthiaskrgr Nov 19, 2025
2cc5bf7
Rollup merge of #147421 - Kivooeo:ice-fix51621, r=chenyukang
matthiaskrgr Nov 19, 2025
714f1ce
Rollup merge of #147521 - sayantn:simd-const-intrinsics, r=madsmtm
matthiaskrgr Nov 19, 2025
3732c3c
Rollup merge of #148201 - ZuseZ4:autodiff-activity-docs, r=oli-obk
matthiaskrgr Nov 19, 2025
8b74790
Rollup merge of #148797 - sorairolake:feature/non-zero-uint-bit-width…
matthiaskrgr Nov 19, 2025
48fa913
Rollup merge of #148798 - tamird:esc-single-quote, r=Amanieu
matthiaskrgr Nov 19, 2025
fd88e61
Rollup merge of #149082 - ZuseZ4:autodiff-unstable-book-fmt, r=chenyu…
matthiaskrgr Nov 19, 2025
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Start documenting autodiff activities
  • Loading branch information
ZuseZ4 committed Oct 28, 2025
commit a2dce774bc35a7fbafbe2d191a4eedf99023e17a
47 changes: 47 additions & 0 deletions library/core/src/macros/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1499,6 +1499,25 @@ pub(crate) mod builtin {
/// - `INPUT_ACTIVITIES`: Specifies one valid activity for each input parameter.
/// - `OUTPUT_ACTIVITY`: Must not be set if the function implicitly returns nothing
/// (or explicitly returns `-> ()`). Otherwise, it must be set to one of the allowed activities.
///
/// ACTIVITIES might either be `Dual` or `Const`, more options will be exposed later.
///
/// `Const` should be used on non-float arguments, or float-based arguments as an optimization
/// if we are not interested in computing the derivatives with respect to this argument.
///
/// `Dual` can be used for float scalar values or for references, raw pointers, or other
/// indirect input arguments. It can also be used on a scalar float return value.
/// If used on a return value, the generated function will return a tuple of two float scalars.
/// If used on an input argument, a new shadow argument of the same type will be created,
/// directly following the original argument.
///
/// We might want to track how one input float affects one or more output floats. In this case,
/// the shadow of one input should be initialized to `1.0`, while the shadows of the other
/// inputs should be initialized to `0.0`. The shadow of the output(s) should be initialized to
/// `0.0`. After calling the generated function, the shadow of the input will be zeroed,
/// while the shadow(s) of the output(s) will contain the derivatives. Forward mode is generally
/// more efficient if we have more output floats marked as `Dual` than input floats.
/// Related information can also be found unter the term "Vector-Jacobian product" (VJP).
#[unstable(feature = "autodiff", issue = "124509")]
#[allow_internal_unstable(rustc_attrs)]
#[allow_internal_unstable(core_intrinsics)]
Expand All @@ -1518,6 +1537,34 @@ pub(crate) mod builtin {
/// - `INPUT_ACTIVITIES`: Specifies one valid activity for each input parameter.
/// - `OUTPUT_ACTIVITY`: Must not be set if the function implicitly returns nothing
/// (or explicitly returns `-> ()`). Otherwise, it must be set to one of the allowed activities.
///
/// ACTIVITIES might either be `Active`, `Duplicated` or `Const`, more options will be exposed later.
///
/// `Active` can be used for float scalar values.
/// If used on an input, a new float will be appended to the return tuple of the generated
/// function. If the function returns a float scalar, `Active` can be used for the return as
/// well. In this case a float scalar will be appended to the argument list, it works as seed.
///
/// `Duplicated` can be used on references, raw pointers, or other indirect input
/// arguments. It creates a new shadow argument of the same type, following the original argument.
/// A const reference or pointer argument will receive a mutable reference or pointer as shadow.
///
/// `Const` should be used on non-float arguments, or float-based arguments as an optimization
/// if we are not interested in computing the derivatives with respect to this argument.
///
/// We often want to track how one or more input floats affect one output float. This output can
/// be a scalar return value, or a mutable reference or pointer argument. In this case, the
/// shadow of the input should be marked as duplicated and initialized to `0.0`. The shadow of
/// the output should be marked as active or duplicated and initialized to `1.0`. After calling
/// the generated function, the shadow(s) of the input(s) will contain the derivatives. If the
/// function has more than one output float marked as active or duplicated, users might want to
/// set one of them to `1.0` and the others to `0.0` to compute partial derivatives.
/// Unlike forward-mode, a call to the generated function does not reset the shadow of the
/// inputs.
/// Reverse mode is generally more efficient if we have more active/duplicated input than
/// output floats.
///
/// Related information can also be found unter the term "Jacobian-Vector Product" (JVP).
#[unstable(feature = "autodiff", issue = "124509")]
#[allow_internal_unstable(rustc_attrs)]
#[allow_internal_unstable(core_intrinsics)]
Expand Down
Loading