From 3f47e33a09b1edce82ee946357210a06dd69cd77 Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Thu, 23 May 2024 11:22:30 -0400 Subject: [PATCH 1/2] Create proposal_product.md proposed `product` low-level API, authored by Paul Springer, Paolo Bientinesi, Edward Valeev, Miles Stoudenmire, Anthony Scemama, Jan Brandejs, and Edward Stow --- proposal_product.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 proposal_product.md diff --git a/proposal_product.md b/proposal_product.md new file mode 100644 index 0000000..a46f4c5 --- /dev/null +++ b/proposal_product.md @@ -0,0 +1,36 @@ +C := alpha A * B + beta C + +void product( + type typeA, int RankA, int[] ExtA, int[] StrideA, void *A, int[] +idxA, + type typeB, int RankB, int[] ExtB, int[] StrideB, void *B, int[] +idxB, + type typeC, int RankC, int[] ExtC, int[] StrideC, void *C, int[] +idxC, + type type_alpha, void *alpha, + type type_beta, void *beta, + void *context, void *INOUT +) + + +*NOTES* +- all arrays are const, except from *C +- type compute -> context + default: compute type = typeC +- all int's are int64 +- aliasing?! + + +void product_vPaul( + type typeA, int RankA, int[] ExtA, int[] StrideA, void *A, int[] +idxA, + type typeB, int RankB, int[] ExtB, int[] StrideB, void *B, int[] +idxB, + type typeC, int RankC, int[] ExtC, int[] StrideC, void *C, int[] +idxC, + type type_alpha, void *alpha, + type type_beta, void *beta, + compute_type type, + const void *infoIN, void *infoOUT +) + From a7d010838551fdc3fefd2156a48260ab8c8fd22f Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Thu, 23 May 2024 11:24:10 -0400 Subject: [PATCH 2/2] Update proposal_product.md --- proposal_product.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/proposal_product.md b/proposal_product.md index a46f4c5..0e2f392 100644 --- a/proposal_product.md +++ b/proposal_product.md @@ -1,5 +1,5 @@ -C := alpha A * B + beta C - +```c +/// C := alpha A * B + beta C void product( type typeA, int RankA, int[] ExtA, int[] StrideA, void *A, int[] idxA, @@ -10,8 +10,8 @@ idxC, type type_alpha, void *alpha, type type_beta, void *beta, void *context, void *INOUT -) - +); +``` *NOTES* - all arrays are const, except from *C @@ -20,7 +20,8 @@ idxC, - all int's are int64 - aliasing?! - +refinement with explicit compute type +```c void product_vPaul( type typeA, int RankA, int[] ExtA, int[] StrideA, void *A, int[] idxA, @@ -32,5 +33,6 @@ idxC, type type_beta, void *beta, compute_type type, const void *infoIN, void *infoOUT -) +); +```