docs.unity3d.com
    Show / Hide Table of Contents

    Class PixelShaderOps

    Inheritance
    Object
    ReferenceCPUOps
    PixelShaderOps
    Inherited Members
    ReferenceCPUOps.PostLayerCleanup()
    ReferenceCPUOps.NewTensor(TensorShape, AllocScope, String)
    ReferenceCPUOps.NewTensorLike(Tensor, AllocScope)
    ReferenceCPUOps.NewTensorLike(Tensor[], AllocScope)
    ReferenceCPUOps.NewTensorForFusedActivation(TensorShape, Layer.FusedActivation)
    ReferenceCPUOps.NewOutputTensor(TensorShape, String)
    ReferenceCPUOps.NewTempTensor(TensorShape, String)
    ReferenceCPUOps.ResetAllocator(Boolean)
    ReferenceCPUOps.SetModelExecutionsReporter(IModelExecutionsReporter)
    ReferenceCPUOps.GetModelExecutionsReporter()
    ReferenceCPUOps.Dense3(Tensor, Tensor, Tensor)
    ReferenceCPUOps.MatMul(Tensor, Int32, Tensor, Int32)
    ReferenceCPUOps.MatMul(Tensor, Boolean, Tensor, Boolean)
    ReferenceCPUOps.Conv3D(Tensor, Tensor, Tensor, Int32[], Int32[], Layer.FusedActivation)
    ReferenceCPUOps.Upsample3D(Tensor, Int32[], Boolean)
    ReferenceCPUOps.DepthToSpace(Tensor, Int32[], Layer.DepthToSpaceMode)
    ReferenceCPUOps.SpaceToDepth(Tensor, Int32[])
    ReferenceCPUOps.GlobalMaxPool2D(Tensor)
    ReferenceCPUOps.GlobalAvgVariancePool2D(Tensor)
    ReferenceCPUOps.Border3D(Tensor, Int32[], Single)
    ReferenceCPUOps.LRN(Tensor, Single, Single, Single, Int32)
    ReferenceCPUOps.Bernoulli(Single)
    ReferenceCPUOps.Gaussian(Single, Single)
    ReferenceCPUOps.Dropout(Tensor, Single)
    ReferenceCPUOps.RandomNormal(TensorShape, Single, Single, Int32)
    ReferenceCPUOps.RandomUniform(TensorShape, Single, Single, Int32)
    ReferenceCPUOps.Multinomial(Tensor, Int32, Int32)
    ReferenceCPUOps.OneHot(Tensor, Int32, Single, Single)
    ReferenceCPUOps.RoiAlign(Tensor, Tensor, Tensor, Int32, Int32, Int32, Single)
    ReferenceCPUOps.TopKIndices(Tensor, Int32, Int32, Boolean, Boolean)
    ReferenceCPUOps.NonZero(Tensor)
    ReferenceCPUOps.TopKValues(Tensor, Tensor, Int32)
    ReferenceCPUOps.PRelu(Tensor, Tensor)
    ReferenceCPUOps.Softmax(Tensor, Int32)
    ReferenceCPUOps.LogSoftmax(Tensor, Int32)
    ReferenceCPUOps.Softplus(Tensor)
    ReferenceCPUOps.Sigmoid(Tensor)
    ReferenceCPUOps.HardSigmoid(Tensor, Single, Single)
    ReferenceCPUOps.Relu6(Tensor)
    ReferenceCPUOps.Elu(Tensor, Single)
    ReferenceCPUOps.Swish(Tensor)
    ReferenceCPUOps.Abs(Tensor)
    ReferenceCPUOps.Neg(Tensor)
    ReferenceCPUOps.Ceil(Tensor)
    ReferenceCPUOps.Floor(Tensor)
    ReferenceCPUOps.Round(Tensor)
    ReferenceCPUOps.Pow(Tensor, Single)
    ReferenceCPUOps.Exp(Tensor)
    ReferenceCPUOps.Log(Tensor)
    ReferenceCPUOps.Acos(Tensor)
    ReferenceCPUOps.Acosh(Tensor)
    ReferenceCPUOps.Asin(Tensor)
    ReferenceCPUOps.Asinh(Tensor)
    ReferenceCPUOps.Atan(Tensor)
    ReferenceCPUOps.Atanh(Tensor)
    ReferenceCPUOps.Cos(Tensor)
    ReferenceCPUOps.Cosh(Tensor)
    ReferenceCPUOps.Sin(Tensor)
    ReferenceCPUOps.Sinh(Tensor)
    ReferenceCPUOps.Tan(Tensor)
    ReferenceCPUOps.Erf(Tensor)
    ReferenceCPUOps.Tile(Tensor, Int32[])
    ReferenceCPUOps.ConstantOfShape(TensorShape, Single)
    ReferenceCPUOps.Shape(Tensor, Int32)
    ReferenceCPUOps.Div(Tensor[])
    ReferenceCPUOps.Pow(Tensor[])
    ReferenceCPUOps.Max(Tensor[])
    ReferenceCPUOps.Mean(Tensor[])
    ReferenceCPUOps.ReduceMin(Tensor, Int32)
    ReferenceCPUOps.ReduceMax(Tensor, Int32)
    ReferenceCPUOps.ArgMax(Tensor, Int32)
    ReferenceCPUOps.ArgMin(Tensor, Int32)
    ReferenceCPUOps.ReduceSum(Tensor, Int32)
    ReferenceCPUOps.ReduceMean(Tensor, Int32)
    ReferenceCPUOps.ReduceProd(Tensor, Int32)
    ReferenceCPUOps.Greater(Tensor, Tensor)
    ReferenceCPUOps.GreaterEqual(Tensor, Tensor)
    ReferenceCPUOps.Less(Tensor, Tensor)
    ReferenceCPUOps.LessEqual(Tensor, Tensor)
    ReferenceCPUOps.Equal(Tensor, Tensor)
    ReferenceCPUOps.LogicalOr(Tensor, Tensor)
    ReferenceCPUOps.LogicalAnd(Tensor, Tensor)
    ReferenceCPUOps.LogicalXor(Tensor, Tensor)
    ReferenceCPUOps.LogicalNot(Tensor)
    ReferenceCPUOps.Sign(Tensor)
    ReferenceCPUOps.Where(Tensor, Tensor, Tensor)
    ReferenceCPUOps.CopyAndReshape(Tensor, TensorShape)
    ReferenceCPUOps.Flatten(Tensor)
    ReferenceCPUOps.Expand(Tensor, TensorShape)
    ReferenceCPUOps.Gather(Tensor[], Int32)
    ReferenceCPUOps.ScatterND(Tensor, Tensor, Tensor, Layer.ScatterNDReductionMode)
    ReferenceCPUOps.NonMaxSuppression(Tensor[], Int32, Single, Single, Int32)
    ReferenceCPUOps.LSTM(Tensor, Tensor[], Tensor[], Tensor[], Tensor[], Tensor, Tensor)
    ReferenceCPUOps.Transpose(Tensor)
    Namespace: Unity.Barracuda
    Syntax
    public class PixelShaderOps : ReferenceCPUOps, IOps, IOpsStatistics

    Constructors

    PixelShaderOps(ITensorAllocator)

    Declaration
    public PixelShaderOps(ITensorAllocator allocator = null)
    Parameters
    Type Name Description
    ITensorAllocator allocator

    Methods

    Activation(String, Tensor, Single, Single)

    Generic activation function

    Declaration
    protected virtual Tensor Activation(string kernelName, Tensor X, float alpha = 0F, float beta = 0F)
    Parameters
    Type Name Description
    String kernelName

    kernel name

    Tensor X

    input

    Single alpha

    alpha

    Single beta

    beta

    Returns
    Type Description
    Tensor

    output Tensor

    Add(Tensor[])

    Add tensors together

    Declaration
    public override Tensor Add(Tensor[] tensors)
    Parameters
    Type Name Description
    Tensor[] tensors

    input tensors

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Add(Tensor[])

    ApplyPadding(Tensor, Int32[], String, Single)

    Apply padding

    Declaration
    protected virtual Tensor ApplyPadding(Tensor X, int[] pad, string kernelName, float constant = 0F)
    Parameters
    Type Name Description
    Tensor X

    input

    Int32[] pad

    padding

    String kernelName

    kernel name

    Single constant

    constant

    Returns
    Type Description
    Tensor

    output Tensor

    AvgPool2D(Tensor, Int32[], Int32[], Int32[])

    2D average pooling

    Declaration
    public override Tensor AvgPool2D(Tensor X, int[] pool, int[] stride, int[] pad)
    Parameters
    Type Name Description
    Tensor X
    Int32[] pool

    pooling

    Int32[] stride

    stride

    Int32[] pad

    padding

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.AvgPool2D(Tensor, Int32[], Int32[], Int32[])

    Border2D(Tensor, Int32[], Single)

    2D border padding

    Declaration
    public override Tensor Border2D(Tensor X, int[] pad, float constant)
    Parameters
    Type Name Description
    Tensor X
    Int32[] pad

    padding

    Single constant
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Border2D(Tensor, Int32[], Single)

    Clip(Tensor, Single, Single)

    Clip

    Declaration
    public override Tensor Clip(Tensor X, float alpha, float beta)
    Parameters
    Type Name Description
    Tensor X
    Single alpha
    Single beta
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Clip(Tensor, Single, Single)

    Concat(Tensor[], Int32)

    Concatenate tensors across axis

    Declaration
    public override Tensor Concat(Tensor[] tensors, int axis)
    Parameters
    Type Name Description
    Tensor[] tensors

    input tensors

    Int32 axis

    axis

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Concat(Tensor[], Int32)

    Conv2D(Tensor, Tensor, Tensor, Int32[], Int32[], Layer.FusedActivation)

    2D convolution

    Declaration
    public override Tensor Conv2D(Tensor X, Tensor K, Tensor B, int[] stride, int[] pad, Layer.FusedActivation fusedActivation)
    Parameters
    Type Name Description
    Tensor X
    Tensor K
    Tensor B
    Int32[] stride

    stride

    Int32[] pad

    padding

    Layer.FusedActivation fusedActivation

    fused activation type

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Conv2D(Tensor, Tensor, Tensor, Int32[], Int32[], Layer.FusedActivation)

    Conv2DTrans(Tensor, Tensor, Tensor, Int32[], Int32[], Int32[], Layer.FusedActivation)

    Transpose 2D convolution

    Declaration
    public override Tensor Conv2DTrans(Tensor X, Tensor K, Tensor B, int[] stride, int[] pad, int[] outputAdjustment, Layer.FusedActivation fusedActivation)
    Parameters
    Type Name Description
    Tensor X
    Tensor K
    Tensor B
    Int32[] stride

    stride

    Int32[] pad

    padding

    Int32[] outputAdjustment

    output adjustments

    Layer.FusedActivation fusedActivation

    fused activation type

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Conv2DTrans(Tensor, Tensor, Tensor, Int32[], Int32[], Int32[], Layer.FusedActivation)

    Copy(Tensor)

    Copy

    Declaration
    public override Tensor Copy(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Copy(Tensor)

    Dense(Tensor, Tensor, Tensor, Layer.FusedActivation)

    Dense layer (matrix multiplication) o = x ⨯ w + b

    Declaration
    public override Tensor Dense(Tensor X, Tensor W, Tensor B, Layer.FusedActivation fusedActivation)
    Parameters
    Type Name Description
    Tensor X
    Tensor W
    Tensor B
    Layer.FusedActivation fusedActivation

    fused activation type

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Dense(Tensor, Tensor, Tensor, Layer.FusedActivation)

    DepthwiseConv2D(Tensor, Tensor, Tensor, Int32[], Int32[], Layer.FusedActivation)

    Depthwise 2D convolution

    Declaration
    public override Tensor DepthwiseConv2D(Tensor X, Tensor K, Tensor B, int[] stride, int[] pad, Layer.FusedActivation fusedActivation)
    Parameters
    Type Name Description
    Tensor X
    Tensor K
    Tensor B
    Int32[] stride

    stride

    Int32[] pad

    padding

    Layer.FusedActivation fusedActivation

    fused activation type

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.DepthwiseConv2D(Tensor, Tensor, Tensor, Int32[], Int32[], Layer.FusedActivation)

    ElementwiseWithBroadcast(String, Tensor[])

    Elementwise broadcast for specified kernel

    Declaration
    protected virtual Tensor ElementwiseWithBroadcast(string kernelName, Tensor[] tensors)
    Parameters
    Type Name Description
    String kernelName

    kernel name

    Tensor[] tensors

    input tensors

    Returns
    Type Description
    Tensor

    output Tensor

    GlobalAvgPool2D(Tensor)

    2D global average pooling

    Declaration
    public override Tensor GlobalAvgPool2D(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.GlobalAvgPool2D(Tensor)

    GlobalPool2D(String, Tensor)

    Generic pooling 2D

    Declaration
    protected virtual Tensor GlobalPool2D(string kernelName, Tensor X)
    Parameters
    Type Name Description
    String kernelName

    kernel name

    Tensor X

    input

    Returns
    Type Description
    Tensor

    output Tensor

    IsFusedActivationSupported(Layer.FusedActivation)

    Check if fusedActivation is supported in-place

    Declaration
    protected override bool IsFusedActivationSupported(Layer.FusedActivation fusedActivation)
    Parameters
    Type Name Description
    Layer.FusedActivation fusedActivation

    fused activation type

    Returns
    Type Description
    Boolean

    true if supported in-place

    Overrides
    ReferenceCPUOps.IsFusedActivationSupported(Layer.FusedActivation)

    LeakyRelu(Tensor, Single)

    Leaky ReLU

    Declaration
    public override Tensor LeakyRelu(Tensor X, float alpha)
    Parameters
    Type Name Description
    Tensor X
    Single alpha

    alpha

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.LeakyRelu(Tensor, Single)

    MaxPool2D(Tensor, Int32[], Int32[], Int32[])

    2D max pooling

    Declaration
    public override Tensor MaxPool2D(Tensor X, int[] pool, int[] stride, int[] pad)
    Parameters
    Type Name Description
    Tensor X
    Int32[] pool

    pooling

    Int32[] stride

    stride

    Int32[] pad

    padding

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.MaxPool2D(Tensor, Int32[], Int32[], Int32[])

    Min(Tensor[])

    Min

    Declaration
    public override Tensor Min(Tensor[] tensors)
    Parameters
    Type Name Description
    Tensor[] tensors

    input tensors

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Min(Tensor[])

    Mul(Tensor[])

    Multiply tensors together

    Declaration
    public override Tensor Mul(Tensor[] tensors)
    Parameters
    Type Name Description
    Tensor[] tensors

    input tensors

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Mul(Tensor[])

    Normalization(Tensor, Tensor, Tensor, Int32, Int32, Single, Layer.FusedActivation)

    Normalization

    Declaration
    public override Tensor Normalization(Tensor X, Tensor S, Tensor B, int pool, int axis, float epsilon, Layer.FusedActivation fusedActivation)
    Parameters
    Type Name Description
    Tensor X
    Tensor S
    Tensor B
    Int32 pool

    pooling

    Int32 axis

    axis

    Single epsilon

    threshold

    Layer.FusedActivation fusedActivation

    fused activation type

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Normalization(Tensor, Tensor, Tensor, Int32, Int32, Single, Layer.FusedActivation)

    Pad2DEdge(Tensor, Int32[])

    Edge padding

    Declaration
    public override Tensor Pad2DEdge(Tensor X, int[] pad)
    Parameters
    Type Name Description
    Tensor X
    Int32[] pad

    padding

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Pad2DEdge(Tensor, Int32[])

    Pad2DReflect(Tensor, Int32[])

    Reflection padding

    Declaration
    public override Tensor Pad2DReflect(Tensor X, int[] pad)
    Parameters
    Type Name Description
    Tensor X
    Int32[] pad

    padding

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Pad2DReflect(Tensor, Int32[])

    Pad2DSymmetric(Tensor, Int32[])

    Symmetric padding

    Declaration
    public override Tensor Pad2DSymmetric(Tensor X, int[] pad)
    Parameters
    Type Name Description
    Tensor X
    Int32[] pad

    padding

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Pad2DSymmetric(Tensor, Int32[])

    Pin(Tensor, Boolean)

    Declaration
    public TextureTensorData Pin(Tensor X, bool uploadCache = true)
    Parameters
    Type Name Description
    Tensor X
    Boolean uploadCache
    Returns
    Type Description
    TextureTensorData

    Pool2D(String, Tensor, Int32[], Int32[], Int32[])

    Declaration
    protected virtual Tensor Pool2D(string kernelName, Tensor X, int[] pool, int[] stride, int[] pad)
    Parameters
    Type Name Description
    String kernelName
    Tensor X
    Int32[] pool
    Int32[] stride
    Int32[] pad
    Returns
    Type Description
    Tensor

    Prepare(Tensor)

    Prepares tensor for use

    Declaration
    public override Tensor Prepare(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    Tensor

    Overrides
    ReferenceCPUOps.Prepare(Tensor)

    PrepareNoAlloc(Tensor)

    Prepares tensor for use without uploading internal data to device

    Declaration
    public override Tensor PrepareNoAlloc(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    Tensor

    Overrides
    ReferenceCPUOps.PrepareNoAlloc(Tensor)

    Reciprocal(Tensor)

    Reciprocal (1/x)

    Declaration
    public override Tensor Reciprocal(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Reciprocal(Tensor)

    Relu(Tensor)

    ReLU

    Declaration
    public override Tensor Relu(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Relu(Tensor)

    Resample2D(Tensor, Int32[], Boolean)

    Resample 2D

    Declaration
    public override Tensor Resample2D(Tensor X, int[] size, bool bilinear)
    Parameters
    Type Name Description
    Tensor X
    Int32[] size

    size

    Boolean bilinear

    bilinear flag

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Resample2D(Tensor, Int32[], Boolean)

    Reshape(Tensor, TensorShape)

    Reshape

    Declaration
    public override Tensor Reshape(Tensor X, TensorShape newShape)
    Parameters
    Type Name Description
    Tensor X
    TensorShape newShape
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Reshape(Tensor, TensorShape)

    ScaleBias(Tensor, Tensor, Tensor)

    Scale bias o = s * x + b, element wise

    Declaration
    public override Tensor ScaleBias(Tensor X, Tensor S, Tensor B)
    Parameters
    Type Name Description
    Tensor X
    Tensor S
    Tensor B
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.ScaleBias(Tensor, Tensor, Tensor)

    Selu(Tensor, Single, Single)

    SELU

    Declaration
    public override Tensor Selu(Tensor X, float alpha, float beta)
    Parameters
    Type Name Description
    Tensor X
    Single alpha

    alpha

    Single beta
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Selu(Tensor, Single, Single)

    Sqrt(Tensor)

    Sqrt

    Declaration
    public override Tensor Sqrt(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Sqrt(Tensor)

    StridedSlice(Tensor, Int32[], Int32[], Int32[])

    Strided slice

    Declaration
    public override Tensor StridedSlice(Tensor X, int[] starts, int[] ends, int[] strides)
    Parameters
    Type Name Description
    Tensor X
    Int32[] starts
    Int32[] ends
    Int32[] strides
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.StridedSlice(Tensor, Int32[], Int32[], Int32[])

    Sub(Tensor[])

    Subtract tensors o = tensors[0] - tensors[1] - ... - tensors[N-1]

    Declaration
    public override Tensor Sub(Tensor[] tensors)
    Parameters
    Type Name Description
    Tensor[] tensors

    input tensors

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Sub(Tensor[])

    Tanh(Tensor)

    Tanh

    Declaration
    public override Tensor Tanh(Tensor X)
    Parameters
    Type Name Description
    Tensor X
    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Tanh(Tensor)

    TensorToRenderTexture(Tensor, RenderTexture, Int32, Int32, Vector4, Vector4, Texture3D)

    Copy Tensor data to RenderTexture

    Declaration
    public void TensorToRenderTexture(Tensor X, RenderTexture target, int batch, int fromChannel, Vector4 scale, Vector4 bias, Texture3D lut)
    Parameters
    Type Name Description
    Tensor X

    source Tensor

    RenderTexture target

    target RenderTexture

    Int32 batch

    batch

    Int32 fromChannel

    from channel

    Vector4 scale

    scale

    Vector4 bias

    bias

    Texture3D lut

    LUT table

    Transpose(Tensor, Int32[])

    Transpose according to permutations

    Declaration
    public override Tensor Transpose(Tensor X, int[] permutations)
    Parameters
    Type Name Description
    Tensor X
    Int32[] permutations

    new axis order

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Transpose(Tensor, Int32[])

    Upsample2D(Tensor, Int32[], Boolean)

    Upsample 2D

    Declaration
    public override Tensor Upsample2D(Tensor X, int[] scale, bool bilinear)
    Parameters
    Type Name Description
    Tensor X
    Int32[] scale

    scale

    Boolean bilinear

    bilinear flag

    Returns
    Type Description
    Tensor

    output Tensor

    Overrides
    ReferenceCPUOps.Upsample2D(Tensor, Int32[], Boolean)
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023