TOpenCLMatrix.DotProd Method

Overload List

#SignatureDescription
1function DotProd(const Vec: TOpenCLMtxVec): Double;Scalar product of two real arrays.
└ indexed: function DotProd(const Vec: TOpenCLMtxVec; VecIndex: Integer; Index: Integer; Len: Integer): Double;
2procedure DotProd(DstIndex: Integer; const Vec1: TOpenCLMtxVec; const Vec2: TOpenCLMtxVec; const Buffer: TOpenCLMtxVec);Scalar product of two real arrays.
3procedure DotProd(DstIndex: Integer; const Vec1: TOpenCLMtxVec; const Vec2: TOpenCLMtxVec; ConjVec: Boolean; const Buffer: TOpenCLMtxVec);Scalar product of two real or complex arrays.

Overload 1: function DotProd(const Vec: TOpenCLMtxVec): Double;

Scalar product of two real arrays.

#NameTypeDescription
1VecTOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix

Returns: Double

Remarks:

Calculates the dot product (scalar value) of the calling object and Vec object and returns a real scalar value. The dot product is defined by the equation:

VV=k=0Length1V[k]V[k]\text{V}\cdot \text{V} = \sum _{k=0} ^{\text{Length}-1}\text{V}[k]\cdot \text{V}[k]

Both objects must be of equal size. If they are not, the method will return the dot product of the largest sub-array.

Indexed: function DotProd(const Vec: TOpenCLMtxVec; VecIndex: Integer; Index: Integer; Len: Integer): Double;

Returns the scalar product between Vec elements [VecIndex]..[VecIndex+Len-1] and calling object elements [Index]..[Index+Len-1].

#NameTypeDescription
1VecTOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix
2VecIndexInteger
3IndexIntegerstart index
4LenIntegerelement count

Returns: Double

Remarks:

An exception is raised if Vec and calling object TOpenCLBase.Complex property is True. An exception is raised if array borders are overrun or underrun.

Overload 2: procedure DotProd(DstIndex: Integer; const Vec1: TOpenCLMtxVec; const Vec2: TOpenCLMtxVec; const Buffer: TOpenCLMtxVec);

Scalar product of two real arrays.

#NameTypeDescription
1DstIndexIntegerdestination start index
2Vec1TOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix
3Vec2TOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix
4BufferTOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix

Result: stored in self (calling object)

Remarks:

Calculates the dot product (scalar value) of the calling object and Vec object and returns a real scalar value. The result is stored at specified index in the calling vector in the GPU memory. This variant of the function is non-blocking (faster), because the result does not have to be copied to the CPU memory to be used.

The dot product is defined by the equation:

VV=k=0Length1V[k]V[k]\text{V}\cdot \text{V} = \sum _{k=0} ^{\text{Length}-1}\text{V}[k]\cdot \text{V}[k]

Both objects must be of equal size. If they are not, the method will return the dot product of the largest sub-array.

Overload 3: procedure DotProd(DstIndex: Integer; const Vec1: TOpenCLMtxVec; const Vec2: TOpenCLMtxVec; ConjVec: Boolean; const Buffer: TOpenCLMtxVec);

Scalar product of two real or complex arrays.

#NameTypeDescription
1DstIndexIntegerdestination start index
2Vec1TOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix
3Vec2TOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix
4ConjVecBoolean
5BufferTOpenCLMtxVecsource TOpenCLVector or TOpenCLMatrix

Result: stored in self (calling object)

Remarks:

Calculates the dot product (scalar value) of the Vec1 and Vec2 stores the result in calling vector at position DstIndex. ConjVec parameter is ignored if data is real. If ConjVec is true, the function computes: result = Vec1*conj(Vec2)

The dot product is defined by the equation:

VV=k=0Length1V[k]V[k]\text{V}\cdot \text{V} = \sum _{k=0} ^{\text{Length}-1}\text{V}[k]\cdot \text{V}[k]

Both objects must be of equal size. If they are not, the method will return the dot product of the largest sub-array.