Class CuTensorNative
- Namespace
- NVMathNet.Interop
- Assembly
- NVMath.Net.dll
Raw P/Invoke bindings for cuTENSOR v2.
public static class CuTensorNativeInheritance
Inherited Members
Properties
ComputeDesc16F
Gets the cuTENSOR compute descriptor for 16-bit float computation.
public static nint ComputeDesc16F { get; }Property Value
ComputeDesc32F
Gets the cuTENSOR compute descriptor for 32-bit float computation.
public static nint ComputeDesc32F { get; }Property Value
ComputeDesc64F
Gets the cuTENSOR compute descriptor for 64-bit double computation.
public static nint ComputeDesc64F { get; }Property Value
Methods
Check(CuTensorStatus, string?)
Throws NVMathNet.Interop.CuTensorException if status is not
NVMathNet.Interop.CuTensorStatus.Success. Optionally prefixes the message with
context.
public static void Check(CuTensorStatus status, string? context = null)Parameters
statusCuTensorStatuscontextstring?
Contract(nint, nint, void*, void*, void*, void*, void*, void*, void*, ulong, nint)
Executes D = alpha * A * B + beta * C using the precomputed plan. All data pointers must point to device memory.
public static void Contract(nint handle, nint plan, void* alpha, void* a, void* b, void* beta, void* c, void* d, void* workspace, ulong workspaceSize, nint stream)Parameters
handlenintplannintalphavoid*avoid*bvoid*betavoid*cvoid*dvoid*workspacevoid*workspaceSizeulongstreamnint
Create()
Creates a cuTENSOR library handle. Caller must call NVMathNet.Interop.CuTensorNative.Destroy(System.IntPtr) when done.
public static nint Create()Returns
CreateContraction(nint, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint, int[], nint)
Creates a contraction operation descriptor (cuTENSOR v2 API): D = alpha * opA(A) * opB(B) + beta * opC(C).
public static nint CreateContraction(nint handle, nint descA, int[] modeA, CuTensorOperator opA, nint descB, int[] modeB, CuTensorOperator opB, nint descC, int[] modeC, CuTensorOperator opC, nint descD, int[] modeD, nint descCompute)Parameters
handlenintdescAnintmodeAint[]opACuTensorOperatordescBnintmodeBint[]opBCuTensorOperatordescCnintmodeCint[]opCCuTensorOperatordescDnintmodeDint[]descComputenint
Returns
CreateElementwiseBinary(nint, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint)
Creates an element-wise binary descriptor computing D[modeD] = opAC(alpha * opA(A[modeA]), gamma * opC(C[modeC])).
public static nint CreateElementwiseBinary(nint handle, nint descA, int[] modeA, CuTensorOperator opA, nint descC, int[] modeC, CuTensorOperator opC, nint descD, int[] modeD, CuTensorOperator opAC, nint descCompute)Parameters
handlenintdescAnintmodeAint[]opACuTensorOperatordescCnintmodeCint[]opCCuTensorOperatordescDnintmodeDint[]opACCuTensorOperatordescComputenint
Returns
CreateElementwiseTrinary(nint, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, CuTensorOperator, nint)
Creates an element-wise trinary operation descriptor computing: D[modeD] = opABC(alpha * opA(A[modeA]), opAB(beta * opB(B[modeB]), gamma * opC(C[modeC]))).
public static nint CreateElementwiseTrinary(nint handle, nint descA, int[] modeA, CuTensorOperator opA, nint descB, int[] modeB, CuTensorOperator opB, nint descC, int[] modeC, CuTensorOperator opC, nint descD, int[] modeD, CuTensorOperator opAB = CuTensorOperator.Add, CuTensorOperator opABC = CuTensorOperator.Add, nint descCompute = 0)Parameters
handlenintdescAnintmodeAint[]opACuTensorOperatordescBnintmodeBint[]opBCuTensorOperatordescCnintmodeCint[]opCCuTensorOperatordescDnintmodeDint[]opABCuTensorOperatoropABCCuTensorOperatordescComputenint
Returns
CreatePermutation(nint, nint, int[], CuTensorOperator, nint, int[], nint)
Creates a permutation descriptor computing B[modeB] = alpha * opA(A[modeA]).
public static nint CreatePermutation(nint handle, nint descA, int[] modeA, CuTensorOperator opA, nint descB, int[] modeB, nint descCompute)Parameters
Returns
CreatePlan(nint, nint, nint, ulong)
Creates an execution plan for an operation.
public static nint CreatePlan(nint handle, nint desc, nint pref, ulong workspaceSizeLimit)Parameters
Returns
CreatePlanPreference(nint, CuTensorAlgo, CuTensorJitMode)
Creates a plan preference descriptor that influences algorithm selection.
public static nint CreatePlanPreference(nint handle, CuTensorAlgo algo = CuTensorAlgo.Default, CuTensorJitMode jitMode = CuTensorJitMode.None)Parameters
handlenint-
cuTENSOR handle.
algoCuTensorAlgo-
Algorithm hint; use NVMathNet.Interop.CuTensorAlgo.Default for autoselection.
jitModeCuTensorJitMode-
JIT compilation mode; use NVMathNet.Interop.CuTensorJitMode.None by default.
Returns
CreateReduction(nint, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint, int[], CuTensorOperator, nint)
Creates a reduction descriptor computing D[modeD] = alpha * opReduce(opA(A[modeA])) + beta * opC(C[modeC]), reducing the modes of A that do not appear in D.
public static nint CreateReduction(nint handle, nint descA, int[] modeA, CuTensorOperator opA, nint descC, int[] modeC, CuTensorOperator opC, nint descD, int[] modeD, CuTensorOperator opReduce, nint descCompute)Parameters
handlenintdescAnintmodeAint[]opACuTensorOperatordescCnintmodeCint[]opCCuTensorOperatordescDnintmodeDint[]opReduceCuTensorOperatordescComputenint
Returns
CreateTensorDescriptor(nint, uint, long[], long[]?, CudaDataType, uint)
Creates a tensor descriptor describing an N-dimensional tensor.
public static nint CreateTensorDescriptor(nint handle, uint numModes, long[] extent, long[]? stride, CudaDataType dataType, uint alignmentRequirement = 128)Parameters
handlenint-
cuTENSOR handle.
numModesuint-
Number of dimensions.
extentlong[]-
Size of each dimension.
stridelong[]?-
Stride for each dimension in elements;
null= packed column-major (the first mode has stride 1). dataTypeCudaDataType-
Element data type.
alignmentRequirementuint-
Alignment in bytes of the data pointer (default: 128).
Returns
Destroy(nint)
Destroys a cuTENSOR library handle.
public static void Destroy(nint handle)Parameters
handlenint
DestroyOperationDescriptor(nint)
Destroys an operation descriptor.
public static void DestroyOperationDescriptor(nint desc)Parameters
descnint
DestroyPlan(nint)
Destroys an execution plan.
public static void DestroyPlan(nint plan)Parameters
plannint
DestroyPlanPreference(nint)
Destroys a plan preference descriptor.
public static void DestroyPlanPreference(nint pref)Parameters
prefnint
DestroyTensorDescriptor(nint)
Destroys a tensor descriptor.
public static void DestroyTensorDescriptor(nint desc)Parameters
descnint
ElementwiseBinaryExecute(nint, nint, void*, void*, void*, void*, void*, nint)
Executes an element-wise binary plan.
public static void ElementwiseBinaryExecute(nint handle, nint plan, void* alpha, void* a, void* gamma, void* c, void* d, nint stream)Parameters
ElementwiseTrinaryExecute(nint, nint, void*, void*, void*, void*, void*, void*, void*, nint)
Executes D = opABC(alpha * opA(A), opAB(beta * opB(B), gamma * opC(C))) element-wise using a precomputed plan.
public static void ElementwiseTrinaryExecute(nint handle, nint plan, void* alpha, void* a, void* beta, void* b, void* gamma, void* c, void* d, nint stream)Parameters
handlenintplannintalphavoid*avoid*betavoid*bvoid*gammavoid*cvoid*dvoid*streamnint
EstimateWorkspaceSize(nint, nint, nint, CuTensorWorksizePreference)
Estimates the required workspace size in bytes for the given operation.
public static ulong EstimateWorkspaceSize(nint handle, nint desc, nint planPref, CuTensorWorksizePreference pref = CuTensorWorksizePreference.Default)Parameters
handlenintdescnintplanPrefnintprefCuTensorWorksizePreference
Returns
Permute(nint, nint, void*, void*, void*, nint)
Executes a permutation plan.
public static void Permute(nint handle, nint plan, void* alpha, void* a, void* b, nint stream)Parameters
Reduce(nint, nint, void*, void*, void*, void*, void*, void*, ulong, nint)
Executes a reduction plan.
public static void Reduce(nint handle, nint plan, void* alpha, void* a, void* beta, void* c, void* d, void* workspace, ulong workspaceSize, nint stream)