pub struct MPSGraphTensorData { /* private fields */ }
MPSGraphCore
and MPSGraphTensorData
only.Expand description
The representation of a compute data type.
Pass data to a graph using a tensor data, a reference will be taken to your data and used just in time when the graph is run.
See also Apple’s documentation
Implementations§
Source§impl MPSGraphTensorData
impl MPSGraphTensorData
Sourcepub unsafe fn shape(&self) -> Retained<MPSShape>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn shape(&self) -> Retained<MPSShape>
objc2-metal-performance-shaders
only.The shape of the tensor data.
Sourcepub unsafe fn dataType(&self) -> MPSDataType
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn dataType(&self) -> MPSDataType
objc2-metal-performance-shaders
only.The data type of the tensor data.
Sourcepub unsafe fn device(&self) -> Retained<MPSGraphDevice>
Available on crate feature MPSGraphDevice
only.
pub unsafe fn device(&self) -> Retained<MPSGraphDevice>
MPSGraphDevice
only.The device of the tensor data.
Sourcepub unsafe fn initWithDevice_data_shape_dataType(
this: Allocated<Self>,
device: &MPSGraphDevice,
data: &NSData,
shape: &MPSShape,
data_type: MPSDataType,
) -> Retained<Self>
Available on crate features MPSGraphDevice
and objc2-metal-performance-shaders
only.
pub unsafe fn initWithDevice_data_shape_dataType( this: Allocated<Self>, device: &MPSGraphDevice, data: &NSData, shape: &MPSShape, data_type: MPSDataType, ) -> Retained<Self>
MPSGraphDevice
and objc2-metal-performance-shaders
only.Initializes the tensor data with an NSData
on a device.
- Parameters:
- device: MPSDevice on which the MPSGraphTensorData exists
- data: NSData from which to copy the contents
- shape: shape of the output tensor
- dataType: dataType of the placeholder tensor
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
Sourcepub unsafe fn initWithMTLBuffer_shape_dataType(
this: Allocated<Self>,
buffer: &ProtocolObject<dyn MTLBuffer>,
shape: &MPSShape,
data_type: MPSDataType,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMTLBuffer_shape_dataType( this: Allocated<Self>, buffer: &ProtocolObject<dyn MTLBuffer>, shape: &MPSShape, data_type: MPSDataType, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes an tensor data with a metal buffer.
The device of the MTLBuffer will be used to get the MPSDevice for this MPSGraphTensorData.
- Parameters:
- buffer: MTLBuffer to be used within the MPSGraphTensorData
- shape: shape of the output tensor
- dataType: dataType of the placeholder tensor
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
§Safety
buffer
may need to be synchronized.buffer
may be unretained, you must ensure it is kept alive while in use.buffer
contents should be of the correct type.
Sourcepub unsafe fn initWithMTLBuffer_shape_dataType_rowBytes(
this: Allocated<Self>,
buffer: &ProtocolObject<dyn MTLBuffer>,
shape: &MPSShape,
data_type: MPSDataType,
row_bytes: NSUInteger,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMTLBuffer_shape_dataType_rowBytes( this: Allocated<Self>, buffer: &ProtocolObject<dyn MTLBuffer>, shape: &MPSShape, data_type: MPSDataType, row_bytes: NSUInteger, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes an tensor data with a metal buffer.
The device of the MTLBuffer will be used to get the MPSDevice for this MPSGraphTensorData.
- Parameters:
- buffer: MTLBuffer to be used within the MPSGraphTensorData
- shape: shape of the output tensor
- dataType: dataType of the placeholder tensor
- rowBytes: rowBytes for the fastest moving dimension, must be larger than or equal to sizeOf(dataType)shape[rank - 1] and must be a multiple of sizeOf(dataType)
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
§Safety
buffer
may need to be synchronized.buffer
may be unretained, you must ensure it is kept alive while in use.buffer
contents should be of the correct type.
Sourcepub unsafe fn initWithMPSMatrix(
this: Allocated<Self>,
matrix: &MPSMatrix,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMPSMatrix( this: Allocated<Self>, matrix: &MPSMatrix, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes a tensor data with an MPS matrix.
The device of the MPSMatrix will be used to get the MPSDevice for this MPSGraphTensorData.
- Parameters:
- matrix: MPSMatrix to be used within the MPSGraphTensorData
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
Sourcepub unsafe fn initWithMPSMatrix_rank(
this: Allocated<Self>,
matrix: &MPSMatrix,
rank: NSUInteger,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMPSMatrix_rank( this: Allocated<Self>, matrix: &MPSMatrix, rank: NSUInteger, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes a tensor data with an MPS matrix enforcing rank of the result.
The device of the MPSMatrix will be used to get the MPSDevice for this MPSGraphTensorData.
- Parameters:
- matrix: MPSMatrix to be used within the MPSGraphTensorData
- rank: The rank of the resulting TensorData tensor. NOTE: must be within { 1, … ,16 }.
- Returns: A valid MPSGraphTensorData of given rank, or nil if allocation failure.
Sourcepub unsafe fn initWithMPSVector(
this: Allocated<Self>,
vector: &MPSVector,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMPSVector( this: Allocated<Self>, vector: &MPSVector, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes a tensor data with an MPS vector.
The device of the MPSVector will be used to get the MPSDevice for this MPSGraphTensorData.
- Parameters:
- vector: MPSVector to be used within the MPSGraphTensorData
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
Sourcepub unsafe fn initWithMPSVector_rank(
this: Allocated<Self>,
vector: &MPSVector,
rank: NSUInteger,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMPSVector_rank( this: Allocated<Self>, vector: &MPSVector, rank: NSUInteger, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes a tensor data with an MPS vector enforcing rank of the result.
The device of the MPSVector will be used to get the MPSDevice for this MPSGraphTensorData.
- Parameters:
- vector: MPSVector to be used within the MPSGraphTensorData
- rank: The rank of the resulting TensorData tensor. NOTE: must be within { 1, … ,16 }.
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
Sourcepub unsafe fn initWithMPSNDArray(
this: Allocated<Self>,
ndarray: &MPSNDArray,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMPSNDArray( this: Allocated<Self>, ndarray: &MPSNDArray, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes an MPSGraphTensorData with an MPS ndarray.
The device of the MPSNDArray will be used to get the MPSDevice for this MPSGraphTensorData.
- Parameters:
- ndarray: MPSNDArray to be used within the MPSGraphTensorData.
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
Sourcepub unsafe fn initWithMPSImageBatch(
this: Allocated<Self>,
image_batch: &MPSImageBatch,
) -> Retained<Self>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn initWithMPSImageBatch( this: Allocated<Self>, image_batch: &MPSImageBatch, ) -> Retained<Self>
objc2-metal-performance-shaders
only.Initializes a tensor data with an MPS image batch.
The dataLayout used will be NHWC, call a transpose or permute to change to a layout of your choice.
- Parameters:
- imageBatch: The device on which the kernel will run, unorm8 and unorm16 images will create a float32 tensorData
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
Sourcepub unsafe fn initWithMTLTensor(
this: Allocated<Self>,
tensor: &ProtocolObject<dyn MTLTensor>,
) -> Retained<Self>
pub unsafe fn initWithMTLTensor( this: Allocated<Self>, tensor: &ProtocolObject<dyn MTLTensor>, ) -> Retained<Self>
Initializes an MPSGraphTensorData with an MTLTensor.
The internal storage of the MTLTensor will be aliased. Requires tensor to support MTLTensorUsageMachineLearning.
- Parameters:
- tensor: MTLTensor to be used within the MPSGraphTensorData
- Returns: A valid MPSGraphTensorData, or nil if allocation failure.
§Safety
tensor
may need to be synchronized.tensor
may be unretained, you must ensure it is kept alive while in use.
Sourcepub unsafe fn mpsndarray(&self) -> Retained<MPSNDArray>
Available on crate feature objc2-metal-performance-shaders
only.
pub unsafe fn mpsndarray(&self) -> Retained<MPSNDArray>
objc2-metal-performance-shaders
only.Return an mpsndarray object will copy contents if the contents are not stored in an MPS ndarray.
- Returns: A valid MPSNDArray, or nil if allocation fails.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init
/new
methods).
§Example
Check that an instance of NSObject
has the precise class NSObject
.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load
instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load
instead.Use Ivar::load
instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T
.
See Ivar::load_ptr
for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T
.
This is the reference-variant. Use Retained::downcast
if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString
.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString
to a NSMutableString
,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass:
for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject
.
§Panics
This works internally by calling isKindOfClass:
. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject
and
NSProxy
implement this method.
§Examples
Cast an NSString
back and forth from NSObject
.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();
Try (and fail) to cast an NSObject
to an NSString
.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());
Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();
This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}
Trait Implementations§
Source§impl AsRef<AnyObject> for MPSGraphTensorData
impl AsRef<AnyObject> for MPSGraphTensorData
Source§impl AsRef<MPSGraphObject> for MPSGraphTensorData
impl AsRef<MPSGraphObject> for MPSGraphTensorData
Source§fn as_ref(&self) -> &MPSGraphObject
fn as_ref(&self) -> &MPSGraphObject
Source§impl AsRef<MPSGraphTensorData> for MPSGraphTensorData
impl AsRef<MPSGraphTensorData> for MPSGraphTensorData
Source§impl AsRef<NSObject> for MPSGraphTensorData
impl AsRef<NSObject> for MPSGraphTensorData
Source§impl Borrow<AnyObject> for MPSGraphTensorData
impl Borrow<AnyObject> for MPSGraphTensorData
Source§impl Borrow<MPSGraphObject> for MPSGraphTensorData
impl Borrow<MPSGraphObject> for MPSGraphTensorData
Source§fn borrow(&self) -> &MPSGraphObject
fn borrow(&self) -> &MPSGraphObject
Source§impl Borrow<NSObject> for MPSGraphTensorData
impl Borrow<NSObject> for MPSGraphTensorData
Source§impl ClassType for MPSGraphTensorData
impl ClassType for MPSGraphTensorData
Source§const NAME: &'static str = "MPSGraphTensorData"
const NAME: &'static str = "MPSGraphTensorData"
Source§type Super = MPSGraphObject
type Super = MPSGraphObject
Source§type ThreadKind = <<MPSGraphTensorData as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<MPSGraphTensorData as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for MPSGraphTensorData
impl Debug for MPSGraphTensorData
Source§impl Deref for MPSGraphTensorData
impl Deref for MPSGraphTensorData
Source§impl Hash for MPSGraphTensorData
impl Hash for MPSGraphTensorData
Source§impl Message for MPSGraphTensorData
impl Message for MPSGraphTensorData
Source§impl NSObjectProtocol for MPSGraphTensorData
impl NSObjectProtocol for MPSGraphTensorData
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass
directly, or cast your objects with AnyObject::downcast_ref