From 8fd7dd901efc8dfe61e05e109d4c97aa6eeea5c3 Mon Sep 17 00:00:00 2001 From: Peng Chang (Charles) Date: Sun, 15 May 2011 19:51:00 +0800 Subject: atlas: remove old patch and add new patch --- cluster/atlas/HISTORY | 5 ++ cluster/atlas/PRE_BUILD | 2 +- cluster/atlas/emit_mm.patch | 154 -------------------------------------------- cluster/atlas/x86.patch | 15 +++++ 4 files changed, 21 insertions(+), 155 deletions(-) delete mode 100644 cluster/atlas/emit_mm.patch create mode 100644 cluster/atlas/x86.patch (limited to 'cluster/atlas') diff --git a/cluster/atlas/HISTORY b/cluster/atlas/HISTORY index ebc979475e..291c95ff22 100644 --- a/cluster/atlas/HISTORY +++ b/cluster/atlas/HISTORY @@ -1,5 +1,10 @@ 2011-05-15 Peng Chang (Charels) * DETAILS: updated to 3.8.4 + * PRE_BUILD: patch archinfo_x86.c; there's no reference builds for Corei2, + which will cause build failure and the detection for Corei2 is buggy, so + only Corei1 will be used + * x86.patch: the patch for archinfo_x86.c + * emit_mm.patch: not necessary any more 2011-05-14 Peng Chang (Charles) * BUILD, CONFIGURE, INSTALL: shared library is common practice and diff --git a/cluster/atlas/PRE_BUILD b/cluster/atlas/PRE_BUILD index 1486f51799..9dbaf8ff89 100755 --- a/cluster/atlas/PRE_BUILD +++ b/cluster/atlas/PRE_BUILD @@ -3,4 +3,4 @@ mkdir $SOURCE_DIRECTORY/bld && cd $SOURCE_DIRECTORY && patch configure $SPELL_DIRECTORY/configure.patch && -patch tune/blas/gemm/emit_mm.c $SPELL_DIRECTORY/emit_mm.patch +patch CONFIG/src/backend/archinfo_x86.c $SPELL_DIRECTORY/x86.patch diff --git a/cluster/atlas/emit_mm.patch b/cluster/atlas/emit_mm.patch deleted file mode 100644 index 0ce40f249b..0000000000 --- a/cluster/atlas/emit_mm.patch +++ /dev/null @@ -1,154 +0,0 @@ -Generated by Charles Peng ---- emit_mm.c 2009-02-19 02:48:25.000000000 +0800 -+++ emit_mm.c 2011-05-13 16:21:41.491001028 +0800 -@@ -1,5 +1,5 @@ - /* -- * Automatically Tuned Linear Algebra Software v3.8.3 -+ * Automatically Tuned Linear Algebra Software v3.8.4 - * (C) Copyright 1997 R. Clint Whaley - * - * Redistribution and use in source and binary forms, with or without -@@ -1638,7 +1638,7 @@ void MMDeclare(FILE *fpout, char *spc, c - cTA, cTB, M, N, K); - fprintf(fpout, " * lda=%d, ldb=%d, ldc=%d, mu=%d, nu=%d, ku=%d, pf=%d\n", - lda, ldb, ldc, mu, nu, ku, pfA); -- fprintf(fpout, " * Generated by ATLAS/tune/blas/gemm/emit_mm.c (3.8.3)\n"); -+ fprintf(fpout, " * Generated by ATLAS/tune/blas/gemm/emit_mm.c (3.8.4)\n"); - fprintf(fpout, " */\n"); - } - -@@ -3082,7 +3082,17 @@ int CompMultHandled(CLEANNODE *cp, int n - * Returns 1 if nb is handled by succeeding case, 0 otherwise - */ - { -- for (; cp; cp = cp->next) if (nb % cp->imult == 0) return(1); -+ -+ for (; cp; cp = cp->next) -+ { -+ if (cp->fixed == 2) -+ { -+ if (cp->imult == nb) -+ return(1); -+ } -+ else if (nb % cp->imult == 0) -+ return(1); -+ } - return(0); - } - -@@ -3110,14 +3120,6 @@ int *GetCompNBs(enum CW which, CLEANNODE - istop = cp0->nb; - while (istop % cp0->imult) istop--; - if (istop == cp0->nb) istop -= cp0->imult; -- for (cp=cp0->next; cp; cp = cp->next) -- { -- if (cp->imult % cp0->imult == 0 && cp->fixed != 2) -- { -- istop = cp->imult; -- break; -- } -- } - - for (i=2*cp0->imult; i <= istop; i += cp0->imult) - { -@@ -3582,7 +3584,7 @@ void GenUpNB_if(char pre, enum CW which, - CLEANNODE *wp, *cp0; - FILE *fp; - int i; -- const char *ifs = "else if", *ifp; -+ const char *ifs = "else if", *ifp, *sp; - const char cwh[3] = {'M', 'N', 'K'}; - char ln[128], st[2], *typ; - -@@ -3613,7 +3615,11 @@ void GenUpNB_if(char pre, enum CW which, - - if (pre == 'c') pre = 'C'; - else if (pre == 'z') pre = 'Z'; -- -+/* -+ * fixed=2 means a kernel specialized for that exact N. They will have not -+ * survived pruning if they weren't better than all the general algorithms, -+ * so we can test for them all up front -+ */ - for (cp=cp0; cp; cp = cp->next) /* handle fixed = 2 cases */ - { - if (cp->fixed == 2) -@@ -3625,36 +3631,49 @@ void GenUpNB_if(char pre, enum CW which, - ifp = ifs; - } - } -- -- for (cp=cp0; cp; cp = cp->next) /* fixed = 1 cases */ -- { -- if (cp->fixed == 1) -- { -- for (i=cp->ncomps-1; i >= 0; i--) -- { -- if (cp->imult > 1) -- fprintf(fp, " %s (%c == %d)\n", ifp, cwh[which], cp->NBs[i]); -- else fprintf(fp, " else\n"); -- fprintf(fp, " {\n ATL_%cup%cBmm%d_%d_%d_b%c%s;\n }\n", -- pre, cwh[which], cp->NBs[i], cp->imult, cp->fixed, -- cbeta, MMARGS); -- ifp = ifs; -- } -- } -- } -- for (cp=cp0; cp; cp = cp->next) /* fixed = 0 cases */ -- { -+/* -+ * All remaining kernels are selected by being a multiple of imult; -+ * fixed=0 will be called directly, while fixed=1 will have a nested -+ * if to find the right compiled version to call -+ */ -+ for (cp=cp0; cp; cp = cp->next) /* fixed = 0/1 cases */ -+ { -+ if (cp->fixed != 1 && cp->fixed != 0) -+ continue; -+ if (cp->imult > 1) -+ fprintf(fp, " %s (%c == %s)\n", ifp, cwh[which], -+ GetInc(cp->imult, GetDiv(cp->imult, st))); -+ else if (ifp == ifs) fprintf(fp, " else\n"); - if (cp->fixed == 0) - { -- if (cp->imult > 1) -- fprintf(fp, " %s (%c == %s)\n", ifp, cwh[which], -- GetInc(cp->imult, GetDiv(cp->imult, st))); -- else if (ifp == ifs) fprintf(fp, " else\n"); - fprintf(fp, " {\n ATL_%cup%cBmm0_%d_%d_b%c%s;\n }\n", - pre, cwh[which], cp->imult, cp->fixed, cbeta, MMARGS); - ifp = ifs; - } -+ else if (cp->fixed == 1) -+ { -+ fprintf(fp, " {\n"); -+ if (cp->ncomps == 1) -+ fprintf(fp, " ATL_%cup%cBmm%d_%d_%d_b%c%s;\n", -+ pre, cwh[which], cp->NBs[0], cp->imult, cp->fixed, -+ cbeta, MMARGS); -+ else /* must select kernel by NB[i] */ -+ { -+ sp = "if"; -+ for (i=cp->ncomps-1; i >= 0; i--) -+ { -+ fprintf(fp, " %s (%c == %d)\n", sp, cwh[which], cp->NBs[i]); -+ fprintf(fp, -+ " {\n ATL_%cup%cBmm%d_%d_%d_b%c%s;\n }\n", -+ pre, cwh[which], cp->NBs[i], cp->imult, cp->fixed, -+ cbeta, MMARGS); -+ sp = "else if"; -+ } -+ } -+ fprintf(fp, " }\n"); -+ } - } -+ - for (cp=cp0; cp && cp->imult != 1; cp = cp->next); - if (!cp) - { -@@ -4330,3 +4349,5 @@ main(int nargs, char **args) - } - exit(0); - } -+ -+ diff --git a/cluster/atlas/x86.patch b/cluster/atlas/x86.patch new file mode 100644 index 0000000000..ad5d68075c --- /dev/null +++ b/cluster/atlas/x86.patch @@ -0,0 +1,15 @@ +--- archinfo_x86.c 2011-05-15 12:43:52.101001247 +0800 ++++ archinfo_x86.c 2011-05-15 12:44:16.568001255 +0800 +@@ -309,11 +309,9 @@ enum MACHTYPE Chip2Mach(enum CHIP chip, + case 0x1A: + case 0x1E: + case 0x1F: +- iret = IntCorei1; +- break; + case 0x25: + case 0x2A: +- iret = IntCorei2; ++ iret = IntCorei1; + break; + default: + iret = MACHOther; -- cgit v1.2.3