コード例 #1
0
 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;
 }
コード例 #2
0
        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);
        }
コード例 #3
0
 public static int GetByteSize(this MPSVectorDescriptor descriptor) =>
 (int)descriptor.Length * GetByteSize(descriptor.DataType);
コード例 #4
0
 public static MPSVectorDescriptor VectorDescriptor(int length, MPSDataType dataType = MPSDataType.Float32) =>
 MPSVectorDescriptor.Create((nuint)length, dataType);