|
| template<class Layout > |
| auto | MakeStrideA (int64_t ld) |
| |
| template<class Layout > |
| auto | MakeStrideB (int64_t ld) |
| |
| template<class TileShape , class LayoutA , class LayoutB > |
| std::pair< cutlass::Status, sycl::event > | RunGemmXmxTf32RowMajorOutput (sycl::queue &queue, int m, int n, int k, float alpha, const float *A, int64_t lda, const float *B, int64_t ldb, float beta, const float *C, int64_t ldc, float *D, int64_t ldd, const std::vector< sycl::event > &deps={}) |
| |
| template<class TileShape , class LayoutA , class LayoutB > |
| std::pair< cutlass::Status, sycl::event > | RunGemmIeeeFp32RowMajorOutput (sycl::queue &queue, int m, int n, int k, float alpha, const float *A, int64_t lda, const float *B, int64_t ldb, float beta, const float *C, int64_t ldc, float *D, int64_t ldd, const std::vector< sycl::event > &deps={}) |
| |
| template<class LayoutA , class LayoutB > |
| std::pair< cutlass::Status, sycl::event > | RunTf32 (const GemmArgs &a) |
| | Runs the TF32/XMX path.
|
| |
| template<class LayoutA , class LayoutB > |
| std::pair< cutlass::Status, sycl::event > | RunIeee (const GemmArgs &a) |
| | Runs the IEEE fp32 path.
|
| |
| bool | IsTf32Aligned (int64_t value) |
| |
template<class Layout >
| auto open3d::ml::impl::sycl_gemm_detail::MakeStrideA |
( |
int64_t |
ld | ) |
|
Builds the CuTe stride for the A operand (canonical CuTe modes [M,K,L]) from a runtime leading dimension, matching cutlass::detail::TagToStrideA_t's convention (unit-stride dim is a compile-time cute::Int<1>): RowMajor -> (ld, 1, batch), ColumnMajor -> (1, ld, batch).
template<class Layout >
| auto open3d::ml::impl::sycl_gemm_detail::MakeStrideB |
( |
int64_t |
ld | ) |
|
Builds the CuTe stride for the B operand. Note: cutlass::detail:: TagToStrideB_t is in canonical CuTe modes [N,K,L] — the opposite convention from A/C/D — so RowMajor/ColumnMajor map to the reverse stride pattern compared to MakeStrideA: RowMajor -> (1, ld, batch), ColumnMajor -> (ld, 1, batch). (Verified against cutlass/detail/layout.hpp; this asymmetry is intentional in CUTLASS/CuTe, reflecting that B's mathematical (K,N) shape is expressed as a (N,K) CuTe tensor.)
template<class TileShape , class LayoutA , class LayoutB >
| std::pair< cutlass::Status, sycl::event > open3d::ml::impl::sycl_gemm_detail::RunGemmXmxTf32RowMajorOutput |
( |
sycl::queue & |
queue, |
|
|
int |
m, |
|
|
int |
n, |
|
|
int |
k, |
|
|
float |
alpha, |
|
|
const float * |
A, |
|
|
int64_t |
lda, |
|
|
const float * |
B, |
|
|
int64_t |
ldb, |
|
|
float |
beta, |
|
|
const float * |
C, |
|
|
int64_t |
ldc, |
|
|
float * |
D, |
|
|
int64_t |
ldd, |
|
|
const std::vector< sycl::event > & |
deps = {} |
|
) |
| |
Runs alpha * op(A) * op(B) + beta * C on the Intel Xe DPAS path via sycl-tla, producing a RowMajor (M x N) output D (D may alias C). A is (M x K, LayoutA), B is (K x N, LayoutB). GEMM element type is cutlass::tfloat32_t (see file header); accumulation/output stay float. Returns {status, completion_event}; does not block. The event is a barrier over all commands previously submitted to queue (see GemmColumnMajorSYCL's doc comment for why sycl-tla leaves no tighter option).