public OptimizableVector(IMTLDevice device, MPSVectorDescriptor descriptor, float initialValue) { VectorLength = (int)descriptor.Length; VectorByteSize = descriptor.GetByteSize(); VectorDescriptor = descriptor; Value = Vector(device, descriptor, initialValue); Momentum = Vector(device, descriptor, 0.0f); Velocity = Vector(device, descriptor, 0.0f); ValuePointer = Value.Data.Contents; }
public static MPSVector Vector(IMTLDevice device, MPSVectorDescriptor descriptor, float initialValue) { var v = new MPSVector(device, descriptor); var vectorByteSize = GetByteSize(descriptor); unsafe { float biasInit = initialValue; var biasInitPtr = (IntPtr)(float *)&biasInit; memset_pattern4(v.Data.Contents, biasInitPtr, vectorByteSize); } return(v); }
public static int GetByteSize(this MPSVectorDescriptor descriptor) => (int)descriptor.Length * GetByteSize(descriptor.DataType);
public static MPSVectorDescriptor VectorDescriptor(int length, MPSDataType dataType = MPSDataType.Float32) => MPSVectorDescriptor.Create((nuint)length, dataType);