CustomCallApiVersion

Enum CustomCallApiVersion 

Source
#[repr(i32)]
pub enum CustomCallApiVersion { ApiVersionUnspecified = 0, ApiVersionOriginal = 1, ApiVersionStatusReturning = 2, ApiVersionStatusReturningUnified = 3, ApiVersionTypedFfi = 4, }
Expand description

The version of the API used by the custom call function. The signatures for each version are given below. TODO(b/189822916): Remove this enum when all clients are migrated to the status-returning API.

Variants§

§

ApiVersionUnspecified = 0

§

ApiVersionOriginal = 1

The first version of the API, with the following signatures:

CPU: void do_custom_call(void* out, const void** in);

GPU: void do_custom_call(CUstream stream, void** buffers, const char* opaque, size_t opaque_len);

§

ApiVersionStatusReturning = 2

When the ability to return success/failure status was added:

CPU: void do_custom_call(void* out, const void** in, XlaCustomCallStatus* status);

GPU: void do_custom_call(CUstream stream, void** buffers, const char* opaque, size_t opaque_len, XlaCustomCallStatus* status);

§

ApiVersionStatusReturningUnified = 3

Fixes the API signatures on the CPU side of the version STATUS_RETURNING by adding the opaque string so that the custom call API is consistent across CPUs and GPUs. For GPUs, the behaviors invoked by API_VERSION_STATUS_RETURNING and API_VERSION_STATUS_RETURNING_UNIFIED are the same.

CPU: void do_custom_call(void* out, const void** in, const char* opaque, size_t opaque_len, XlaCustomCallStatus* status);

GPU: void do_custom_call(CUstream stream, void** buffers, const char* opaque, size_t opaque_len, XlaCustomCallStatus* status);

§

ApiVersionTypedFfi = 4

Api version implementing XLA runtime custom call calling convention. These custom calls can be registered as an XLA runtime custom call (1) or as XLA runtime FFI binding (2).

This type of custom call uses custom ABI to pass type information along with custom call arguments. Also it passes buffer arguments together with data type, sizes and strides.

Example: (XLA runtime custom call)

absl::Status DoCustomCall(StridedMemrefView arg, float attr);

CustomCall::Bind(“custom_call”) .Arg() .Attr(“attr”) .To(DoCustomCall);

(1) xla/runtime/custom_call.h (2) xla/runtime/ffi/ffi.h

Implementations§

Source§

impl CustomCallApiVersion

Source

pub fn is_valid(value: i32) -> bool

Returns true if value is a variant of CustomCallApiVersion.

Source

pub fn from_i32(value: i32) -> Option<CustomCallApiVersion>

👎Deprecated: Use the TryFrom<i32> implementation instead

Converts an i32 to a CustomCallApiVersion, or None if value is not a valid variant.

Source§

impl CustomCallApiVersion

Source

pub fn as_str_name(&self) -> &'static str

String value of the enum field names used in the ProtoBuf definition.

The values are not transformed in any way and thus are considered stable (if the ProtoBuf definition does not change) and safe for programmatic use.

Source

pub fn from_str_name(value: &str) -> Option<Self>

Creates an enum from field names used in the ProtoBuf definition.

Trait Implementations§

Source§

impl Clone for CustomCallApiVersion

Source§

fn clone(&self) -> CustomCallApiVersion

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CustomCallApiVersion

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CustomCallApiVersion

Source§

fn default() -> CustomCallApiVersion

Returns the “default value” for a type. Read more
Source§

impl From<CustomCallApiVersion> for i32

Source§

fn from(value: CustomCallApiVersion) -> i32

Converts to this type from the input type.
Source§

impl Hash for CustomCallApiVersion

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for CustomCallApiVersion

Source§

fn cmp(&self, other: &CustomCallApiVersion) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for CustomCallApiVersion

Source§

fn eq(&self, other: &CustomCallApiVersion) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for CustomCallApiVersion

Source§

fn partial_cmp(&self, other: &CustomCallApiVersion) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl TryFrom<i32> for CustomCallApiVersion

Source§

type Error = UnknownEnumValue

The type returned in the event of a conversion error.
Source§

fn try_from(value: i32) -> Result<CustomCallApiVersion, UnknownEnumValue>

Performs the conversion.
Source§

impl Copy for CustomCallApiVersion

Source§

impl Eq for CustomCallApiVersion

Source§

impl StructuralPartialEq for CustomCallApiVersion

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.