Release notes#
0.4.1#
- Notes:
Patch release to support MathDx 26.06.1.
0.4.0#
- New functionalities:
Added support for nvCOMPDx.
Added CUBLASDX_DEVICE_FUNCTION_FINISH_ACCUMULATION, a device function that finalizes a reusable accumulator after pipelined execution. It must be called once after the last CUBLASDX_DEVICE_FUNCTION_EXECUTE and before the accumulator is read by a non-epilogue path. Do not combine it with CUBLASDX_DEVICE_FUNCTION_EPILOGUE, which finalizes internally.
Added the LIBMATHDX_TMPDIR environment variable, which overrides the directory used for NVRTC bundled-header temporary files. When unset, the OS temporary directory is used as before.
- Breaking changes:
Removed the cuSolverDx traits CUSOLVERDX_TRAIT_SHARED_MEMORY_SIZE, CUSOLVERDX_TRAIT_ARRANGEMENT, CUSOLVERDX_TRAIT_BATCHES_PER_BLOCK, CUSOLVERDX_TRAIT_TYPE, CUSOLVERDX_TRAIT_LEADING_DIMENSION and CUSOLVERDX_TRAIT_VALUE_TYPE. With the exception of CUSOLVERDX_TRAIT_SHARED_MEMORY_SIZE, these values are descriptor inputs supplied through the corresponding operators (CUSOLVERDX_OPERATOR_ARRANGEMENT, CUSOLVERDX_OPERATOR_BATCHES_PER_BLOCK, CUSOLVERDX_OPERATOR_TYPE, CUSOLVERDX_OPERATOR_LEADING_DIMENSION and the data-type operators) and are therefore available to the caller without a trait query. The remaining trait enumerators and their values are unchanged. The function cusolverdxGetTraitCommondxDataTypes has also been removed, as CUSOLVERDX_TRAIT_VALUE_TYPE was its only supported trait.
For pipelined cuBLASDx (a BLAS created with a pipeline), the accumulator creation device function (CUBLASDX_DEVICE_FUNCTION_CREATE on a CUBLASDX_TENSOR_SUGGESTED_ACCUMULATOR_C tensor) must now be created with cublasdxCreateDeviceFunctionWithPipelines, passing the tile pipeline. The generated function’s signature now takes the tile pipeline as an additional first argument (create_acc(tile_pipeline, acc) instead of create_acc(acc)), as the accumulator instance is now sourced from the tile pipeline.
0.3.2#
- New functionalities:
Added more cuSolverDx traits. Refer to libcusolverdx.h. New supported traits: CUSOLVERDX_TRAIT_ARRANGEMENT, CUSOLVERDX_TRAIT_BATCHES_PER_BLOCK, CUSOLVERDX_TRAIT_TYPE, CUSOLVERDX_TRAIT_LEADING_DIMENSION and CUSOLVERDX_TRAIT_VALUE_TYPE.
Added support for passing cuRANDDx distribution parameters at runtime. Refer to libcuranddx.h.
- Notes:
mapidx2crd may be less performant for shared-memory swizzled tensors. This is a known limitation in 0.3.2 and is planned to be improved in a future release.
- Breaking changes:
Removed cuSolverDx CUSOLVERDX_TRAIT_SUGGESTED_LEADING_DIMENSION trait. It was removed from cuSolverDx entirely.
Removed the operator CURANDDX_OPERATOR_DISTRIBUTION_PARAMETERS, removed the function curanddxSetOperatorDoubles and the signature of the compiled generate function now expects distribution parameters in the last argument (unless the CURANDDX_DISTRIBUTION_UNIFORM_BITS is used).
0.3.1#
- New functionalities:
New Opaque tensor copies without BLAS descriptor using LIBMATHDX_NONE.
- Breaking changes:
The COMMONDX_OPTION_EXTRA_NVTRC_ARGS enum had a spelling mistake and was renamed COMMONDX_OPTION_EXTRA_NVRTC_ARGS.
The type of alpha and beta in axpby(alpha, c, beta, d) was changed from having the type of C (in the BLAS descriptor) for both to having the type of c and d, respectively.
The type of alpha and beta in BLAS execute(alpha, A, B, beta, C) was changed from having the type of C as specified in the BLAS descriptor to the type of its C argument.
0.3.0#
- New functionalities:
New cuRANDDx apis. See libcuranddx.h.
New cuBLASDx “pipelined” APIs. See libcublasdx.h. This includes new opaque tensor types (CUBLASDX_TENSOR_SUGGESTED_ACCUMULATOR_C), new opaque stateful pipelines and corresponding device functions (CUBLASDX_DEVICE_FUNCTION_EXECUTE, CUBLASDX_DEVICE_FUNCTION_EPILOGUE). Pipeline APIs require CUDA toolkit 13.0 or above. cublasdxCreateDeviceFunctionWithPipelines must be used to create device functions operating on opaque pipelines.
New cuBLASDx opaque tensors representing arbitrary strided tensors. See cublasdxCreateTensorStrided in libcublasdx.h.
Added cuSolverDx traits. See libcusolverdx.h. This includes CUSOLVERDX_TRAIT_SUGGESTED_BLOCK_DIM, CUSOLVERDX_TRAIT_SUGGESTED_BATCHES_PER_BLOCK, etc.
Added support for family (f) and accelerated (a) virtual architectures.
- Breaking changes:
cuBLASDx opaque tensors lifetime is now decoupled from their descriptors. cublasdxBindTensor was removed and replaced by cublasdxCreateTensor and cublasdxDestroyTensor.
cuBLASDx device functions lifetime is now decoupled from their descriptors. cublasdxBindDeviceFunction was removed and replaced by cublasdxCreateDeviceFunction and cublasdxDestroyDeviceFunction.
The meaning of M, N, K in cuSolverDx changed for TRSM. See https://docs.nvidia.com/cuda/cusolverdx/release_notes.html
0.2.3#
- New functionalities:
New mathdxGetVersionEx, cusolverdxGetVersion, cufftdxGetVersion and cublasdxGetVersion APIs.
- Breaking changes:
CUBLASDX_DEVICE_FUNCTION_TRAIT_NAME was removed. Use CUBLASDX_DEVICE_FUNCTION_TRAIT_SYMBOL to get a device function symbol (aka extern “C” name).
0.2.2#
- Bug fixes:
Fixed some cuFFTDx traits: SM87 and all thread APIs were returning wrong EPT and FPB’s in the cufftdxGetKnob* APIs.
- New functionalities:
New cufftdxIsSupported APIs that returns whether a descriptor has an underlying implementation.
Significantly improved performance when querying the CUFFTDX_TRAIT_ELEMENTS_PER_THREAD, CUFFTDX_TRAIT_SHARED_MEMORY_SIZE, CUFFTDX_TRAIT_FFTS_PER_BLOCK, CUFFTDX_TRAIT_SUGGESTED_FFTS_PER_BLOCK, CUFFTDX_TRAIT_BLOCK_DIM traits.
0.2.1#
- Bug fixes:
Alignment of shared memory tensors now respect the CUBLASDX_OPERATOR_ALIGNMENT operator
- New functionalities:
axpby functionalities for register memory tensors
Tensor option to set specific alignment for global memory tensors
TRSM and non-pivoted LU in cuSolverDx
Complex support for Cholesky and TRSM
COMMONDX_OPTION_EXTRA_NVRTC_ARGS option to add extra arguments to NVRTC at compile time.
LIBMATHDX_NVRTC_ARGS_OVERWRITE and LIBMATHDX_NVRTC_ARGS_EXTRA for NVRTC arguments override.
- Breaking changes:
COMMONDX_OPTION_CODE_TYPE was renamed COMMONDX_OPTION_CODE_CONTAINER
commondxCodeType_t was renamed commondxCodeContainer_t
commondxCodeTypeToStr was renamed commondxCodeContainerToStr
CUBLASDX_TENSOR_TRAIT_NAME has been removed. CUBLASDX_TENSOR_TRAIT_UID is deprecated. Please use CUBLASDX_TENSOR_TRAIT_OPAQUE_NAME instead.
0.2.0#
- Breaking changes:
cuSolverDx Cholesky device APIs now return an integer (through a pointer passed as the last argument) indicating whether the factorization was successful or not.
cuSolverDx Cholesky factorization device APIs no longer take a leading dimension by default.
cuBLASDx & cuSolverDx pointer APIs take all their arguments by pointers, including alpha and beta (for matmuls) and leading dimensions.
CUFFTDX_API_BLOCK_LMEM and CUFFTDX_API_BLOCK_SMEM were renamed CUFFTDX_API_LMEM and CUFFTDX_API_SMEM, respectively.
CUBLASDX_API_BLOCK_SMEM and CUBLASDX_API_BLOCK_SMEM_DYNAMIC_LD were renamed CUBLASDX_API_SMEM and CUBLASDX_API_SMEM_DYNAMIC_LD, respectively.
CUSOLVERDX_API_BLOCK_SMEM and CUSOLVERDX_API_BLOCK_SMEM_DYNAMIC_LD were renamed CUSOLVERDX_API_SMEM and CUSOLVERDX_API_SMEM_DYNAMIC_LD, respectively.
- New functionalities
cuBLASDx now provides tensor APIs with output in shared or register memory
cuSolverDx has a new CUSOLVERDX_API_SMEM_DYNAMIC_LD enumeration for optional leading dimension arguments.
Deprecated functionalities: cublasdxGetLTOIR*, cufftdxGetLTOIR* and cusolverdxGetLTOIR* APIs are all deprecated. It is now recommended to use commondxGetCodeLTOIR* APIs instead.