Browse Source

THUNDERX2T99: Add Optimized CGEMM Implementation

tags/v0.2.20^2
Ashwin Sekhar T K 8 years ago
parent
commit
2757b49767
4 changed files with 2186 additions and 46 deletions
  1. +4
    -0
      driver/others/parameter.c
  2. +3
    -4
      kernel/arm64/KERNEL.THUNDERX2T99
  3. +2175
    -0
      kernel/arm64/cgemm_kernel_8x4_thunderx2t99.S
  4. +4
    -42
      param.h

+ 4
- 0
driver/others/parameter.c View File

@@ -747,6 +747,10 @@ void blas_set_parameter(void)
sgemm_q = 352;
sgemm_r = 4096;

cgemm_p = 128;
cgemm_q = 224;
cgemm_r = 4096;

dgemm_prefetch_size_a = 3584;
dgemm_prefetch_size_b = 512;
dgemm_prefetch_size_c = 128;


+ 3
- 4
kernel/arm64/KERNEL.THUNDERX2T99 View File

@@ -17,13 +17,12 @@ endif

ifeq ($(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N), 8x4)
DGEMMKERNEL = dgemm_kernel_8x4_thunderx2t99.S
else
DGEMMKERNEL = dgemm_kernel_$(DGEMM_UNROLL_M)x$(DGEMM_UNROLL_N).S
endif

ifeq ($(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N), 16x4)
SGEMMKERNEL = sgemm_kernel_16x4_thunderx2t99.S
else
SGEMMKERNEL = sgemm_kernel_$(SGEMM_UNROLL_M)x$(SGEMM_UNROLL_N).S
endif

ifeq ($(CGEMM_UNROLL_M)x$(CGEMM_UNROLL_N), 8x4)
CGEMMKERNEL = cgemm_kernel_8x4_thunderx2t99.S
endif

+ 2175
- 0
kernel/arm64/cgemm_kernel_8x4_thunderx2t99.S
File diff suppressed because it is too large
View File


+ 4
- 42
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 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
#endif

@@ -2462,7 +2424,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define SYMV_P 16
#endif

#if defined(THUNDERX2T99)
#if defined(THUNDERX2T99) || defined(VULCAN)
#define SNUMOPT 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 DGEMM_DEFAULT_P dgemm_p
#define CGEMM_DEFAULT_P 256
#define CGEMM_DEFAULT_P cgemm_p
#define ZGEMM_DEFAULT_P 128

#define SGEMM_DEFAULT_Q sgemm_q
#define DGEMM_DEFAULT_Q dgemm_q
#define CGEMM_DEFAULT_Q 512
#define CGEMM_DEFAULT_Q cgemm_q
#define ZGEMM_DEFAULT_Q 512

#define SGEMM_DEFAULT_R sgemm_r
#define DGEMM_DEFAULT_R dgemm_r
#define CGEMM_DEFAULT_R 4096
#define CGEMM_DEFAULT_R cgemm_r
#define ZGEMM_DEFAULT_R 2048

#define SYMV_P 16


Loading…
Cancel
Save