Table of Contents

Class CuTensorNative

Namespace
NVMathNet.Interop
Assembly
NVMath.Net.dll

Raw P/Invoke bindings for cuTENSOR v2.

public static class CuTensorNative

Inheritance

Inherited Members

Properties

ComputeDesc16F

Gets the cuTENSOR compute descriptor for 16-bit float computation.

public static nint ComputeDesc16F { get; }

Property Value

nint

ComputeDesc32F

Gets the cuTENSOR compute descriptor for 32-bit float computation.

public static nint ComputeDesc32F { get; }

Property Value

nint

ComputeDesc64F

Gets the cuTENSOR compute descriptor for 64-bit double computation.

public static nint ComputeDesc64F { get; }

Property Value

nint

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

status CuTensorStatus
context string?

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

handle nint
plan nint
alpha void*
a void*
b void*
beta void*
c void*
d void*
workspace void*
workspaceSize ulong
stream nint

Create()

Creates a cuTENSOR library handle. Caller must call NVMathNet.Interop.CuTensorNative.Destroy(System.IntPtr) when done.

public static nint Create()

Returns

nint

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

handle nint
descA nint
modeA int[]
opA CuTensorOperator
descB nint
modeB int[]
opB CuTensorOperator
descC nint
modeC int[]
opC CuTensorOperator
descD nint
modeD int[]
descCompute nint

Returns

nint

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

handle nint
descA nint
modeA int[]
opA CuTensorOperator
descC nint
modeC int[]
opC CuTensorOperator
descD nint
modeD int[]
opAC CuTensorOperator
descCompute nint

Returns

nint

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

handle nint
descA nint
modeA int[]
opA CuTensorOperator
descB nint
modeB int[]
opB CuTensorOperator
descC nint
modeC int[]
opC CuTensorOperator
descD nint
modeD int[]
opAB CuTensorOperator
opABC CuTensorOperator
descCompute nint

Returns

nint

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

handle nint
descA nint
modeA int[]
opA CuTensorOperator
descB nint
modeB int[]
descCompute nint

Returns

nint

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

handle nint
desc nint
pref nint
workspaceSizeLimit ulong

Returns

nint

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

handle nint

cuTENSOR handle.

algo CuTensorAlgo

Algorithm hint; use NVMathNet.Interop.CuTensorAlgo.Default for autoselection.

jitMode CuTensorJitMode

JIT compilation mode; use NVMathNet.Interop.CuTensorJitMode.None by default.

Returns

nint

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

handle nint
descA nint
modeA int[]
opA CuTensorOperator
descC nint
modeC int[]
opC CuTensorOperator
descD nint
modeD int[]
opReduce CuTensorOperator
descCompute nint

Returns

nint

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

handle nint

cuTENSOR handle.

numModes uint

Number of dimensions.

extent long[]

Size of each dimension.

stride long[]?

Stride for each dimension in elements; null = packed column-major (the first mode has stride 1).

dataType CudaDataType

Element data type.

alignmentRequirement uint

Alignment in bytes of the data pointer (default: 128).

Returns

nint

Destroy(nint)

Destroys a cuTENSOR library handle.

public static void Destroy(nint handle)

Parameters

handle nint

DestroyOperationDescriptor(nint)

Destroys an operation descriptor.

public static void DestroyOperationDescriptor(nint desc)

Parameters

desc nint

DestroyPlan(nint)

Destroys an execution plan.

public static void DestroyPlan(nint plan)

Parameters

plan nint

DestroyPlanPreference(nint)

Destroys a plan preference descriptor.

public static void DestroyPlanPreference(nint pref)

Parameters

pref nint

DestroyTensorDescriptor(nint)

Destroys a tensor descriptor.

public static void DestroyTensorDescriptor(nint desc)

Parameters

desc nint

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

handle nint
plan nint
alpha void*
a void*
gamma void*
c void*
d void*
stream nint

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

handle nint
plan nint
alpha void*
a void*
beta void*
b void*
gamma void*
c void*
d void*
stream nint

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

handle nint
desc nint
planPref nint
pref CuTensorWorksizePreference

Returns

ulong

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

handle nint
plan nint
alpha void*
a void*
b void*
stream nint

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)

Parameters

handle nint
plan nint
alpha void*
a void*
beta void*
c void*
d void*
workspace void*
workspaceSize ulong
stream nint