THUNDERX2T99: Add Optimized CGEMM Implementation

This commit is contained in:
Ashwin Sekhar T K 2017-01-25 03:14:59 -08:00
parent 1de6fa0f50
commit 2757b49767
4 changed files with 2186 additions and 46 deletions

View File

@ -747,6 +747,10 @@ void blas_set_parameter(void)
sgemm_q = 352; sgemm_q = 352;
sgemm_r = 4096; sgemm_r = 4096;
cgemm_p = 128;
cgemm_q = 224;
cgemm_r = 4096;
dgemm_prefetch_size_a = 3584; dgemm_prefetch_size_a = 3584;
dgemm_prefetch_size_b = 512; dgemm_prefetch_size_b = 512;
dgemm_prefetch_size_c = 128; dgemm_prefetch_size_c = 128;

View File

@ -17,13 +17,12 @@ endif
ifeq ($(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N), 8x4) ifeq ($(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N), 8x4)
DGEMMKERNEL = dgemm_kernel_8x4_thunderx2t99.S DGEMMKERNEL = dgemm_kernel_8x4_thunderx2t99.S
else
DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S
endif endif
ifeq ($(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N), 16x4) ifeq ($(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N), 16x4)
SGEMMKERNEL = sgemm_kernel_16x4_thunderx2t99.S SGEMMKERNEL = sgemm_kernel_16x4_thunderx2t99.S
else
SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S
endif endif
ifeq ($(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N), 8x4)
CGEMMKERNEL = cgemm_kernel_8x4_thunderx2t99.S
endif

File diff suppressed because it is too large Load Diff

46
param.h
View File

@ -2303,44 +2303,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define ZGEMM_DEFAULT_R 4096 #define ZGEMM_DEFAULT_R 4096
#define SYMV_P 16
#endif
#if defined(VULCAN)
#define SNUMOPT 2
#define DNUMOPT 2
#define GEMM_DEFAULT_OFFSET_A 0
#define GEMM_DEFAULT_OFFSET_B 0
#define GEMM_DEFAULT_ALIGN 0x03fffUL
#define SGEMM_DEFAULT_UNROLL_M 16
#define SGEMM_DEFAULT_UNROLL_N 4
#define DGEMM_DEFAULT_UNROLL_M 8
#define DGEMM_DEFAULT_UNROLL_N 4
#define CGEMM_DEFAULT_UNROLL_M 8
#define CGEMM_DEFAULT_UNROLL_N 4
#define ZGEMM_DEFAULT_UNROLL_M 4
#define ZGEMM_DEFAULT_UNROLL_N 4
#define SGEMM_DEFAULT_P sgemm_p
#define DGEMM_DEFAULT_P dgemm_p
#define CGEMM_DEFAULT_P 256
#define ZGEMM_DEFAULT_P 128
#define SGEMM_DEFAULT_Q sgemm_q
#define DGEMM_DEFAULT_Q dgemm_q
#define CGEMM_DEFAULT_Q 512
#define ZGEMM_DEFAULT_Q 512
#define SGEMM_DEFAULT_R sgemm_r
#define DGEMM_DEFAULT_R dgemm_r
#define CGEMM_DEFAULT_R 4096
#define ZGEMM_DEFAULT_R 2048
#define SYMV_P 16 #define SYMV_P 16
#endif #endif
@ -2462,7 +2424,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define SYMV_P 16 #define SYMV_P 16
#endif #endif
#if defined(THUNDERX2T99) #if defined(THUNDERX2T99) || defined(VULCAN)
#define SNUMOPT 2 #define SNUMOPT 2
#define DNUMOPT 2 #define DNUMOPT 2
@ -2484,17 +2446,17 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define SGEMM_DEFAULT_P sgemm_p #define SGEMM_DEFAULT_P sgemm_p
#define DGEMM_DEFAULT_P dgemm_p #define DGEMM_DEFAULT_P dgemm_p
#define CGEMM_DEFAULT_P 256 #define CGEMM_DEFAULT_P cgemm_p
#define ZGEMM_DEFAULT_P 128 #define ZGEMM_DEFAULT_P 128
#define SGEMM_DEFAULT_Q sgemm_q #define SGEMM_DEFAULT_Q sgemm_q
#define DGEMM_DEFAULT_Q dgemm_q #define DGEMM_DEFAULT_Q dgemm_q
#define CGEMM_DEFAULT_Q 512 #define CGEMM_DEFAULT_Q cgemm_q
#define ZGEMM_DEFAULT_Q 512 #define ZGEMM_DEFAULT_Q 512
#define SGEMM_DEFAULT_R sgemm_r #define SGEMM_DEFAULT_R sgemm_r
#define DGEMM_DEFAULT_R dgemm_r #define DGEMM_DEFAULT_R dgemm_r
#define CGEMM_DEFAULT_R 4096 #define CGEMM_DEFAULT_R cgemm_r
#define ZGEMM_DEFAULT_R 2048 #define ZGEMM_DEFAULT_R 2048
#define SYMV_P 16 #define SYMV_P 16