Commit Graph

116 Commits

Author SHA1 Message Date
Field G. Van Zee
3be2744cbe Update to template gemm ukernel comments.
Details:
- Updated comments on alignment of a1 and b1 to match wiki.
2014-11-21 12:28:08 -06:00
Timmy
694029d9d7 #define PASTEF773 required by cblas compatiility layer 2014-11-19 15:25:14 -06:00
Field G. Van Zee
58796abda6 Removed KC constraint comments from _kernel.h files.
Details:
- Since 4674ca8c, the constraint that KC be a multiple of both MR and
  NR have been relaxed, and thus it was time to remove the comments
  from the top of the bli_kernel.h files of all configurations.
2014-11-06 14:31:52 -06:00
Field G. Van Zee
7bbc95a54f Added new piledriver micro-kernels.
Details:
- Added new micro-kernels for the AMD piledriver architecture (one
  for each datatype).
- Updates and tweaks to piledriver configuration.
- Added 3xk packm micro-kernel support.
- Explicitly unrolled some of the smaller packm micro-kernels.
- Added notes to avx/sandybridge and piledriver micro-kernel files
  acknowledging the influence of the corresponding kernel code in
  OpenBLAS.
2014-10-29 10:52:23 -05:00
Field G. Van Zee
7b6fe4cae5 Minor tweaks to sandybridge/avx micro-kernels.
Details:
- Changed the MC blocksize for zgemm micro-kernel from 128 to 64.
- Removed usage of b_next in all x86_64/avx gemm micro-kernels.
2014-10-12 12:01:51 -05:00
Field G. Van Zee
a6a156e9fe Added cgemm ukernel for avx/sandybridge.
Details:
- Implemented AVX-based cgemm micro-kernel (via GNU extended inline
  assembly syntax).
- Updated sandybridge configuration accordingly.
2014-10-10 14:26:41 -05:00
Field G. Van Zee
6f8575ab25 Added zgemm ukernel for avx/sandybridge.
Details:
- Implemented AVX-based zgemm micro-kernel (via GNU extended inline
  assembly syntax).
- Updated sandybridge configuration accordingly.
2014-10-10 10:01:45 -05:00
Tyler Smith
7a8ad47fb2 Minor changes to knc configuration, including preference row major storage
Also fixed a bug in the knc micro-kernel where it would fail if k == 0
2014-10-08 15:52:13 -05:00
Tyler Smith
a2b59a37f1 Fixed make defs so that they actually compile for bulldozer 2014-09-15 10:44:44 -05:00
Tyler Smith
86fc7e4076 Added bulldozer configuration and updated piledriver micro-kernel 2014-09-15 10:35:46 -05:00
Field G. Van Zee
af521ee6f2 Changed semantics of blocksize extensions.
Details:
- Changed semantics of cache and register blocksize extensions so that
  the extended values are tracked, rather than just the marginal
  extensions.
- BLIS_EXTEND_[MKN]C_? has been renamed BLIS_MAXIMUM_[MKN]C_?.
- BLIS_EXTEND_[MKN]R_? has been renamed BLIS_PACKDIM_[MKN]R_?.
- bli_blksz_ext_*() APIs have been renamed to bli_blksz_max_*(). Note
  that these "max" query routines grab the maximum value for cache
  blocksizes and the packdim value for register blocksizes.
- bli_info_*() API has been updated accordingly.
- All configurations have been updated accordingly.
2014-09-01 14:06:46 -05:00
Field G. Van Zee
dd61307f55 Minor update to sandybridge MC_S, KC_S.
Details:
- Changed sandybridge MC and KC for single-precision real to 128 and 384,
  respectively.
- Updated comments in template configuration's gemm micro-kernel file
  to document the new "contiguous row preference" macro.
2014-08-20 09:52:16 -05:00
Field G. Van Zee
bc1d86b2d4 Sandy Bridge configuration, micro-kernel update.
Details:
- Minor updates to bli_config and bli_kernel.h for sandybridge
  configuration.
- Renamed existing AVX intrinsic-based micro-kernel file to
  bli_gemm_int_d8x4.c.
- Added new file, bli_gemm_asm_d8x4.c, which provides assembly-based
  gemm micro-kernels for single- and double-precision real.
2014-08-07 19:01:20 -05:00
Field G. Van Zee
45692e3ad4 Reverted some accidental changes.
Details:
- Reverted some changes that were unintentionally included in the
  previous commit (9526ce98). Thanks to Tony Kelman for pointing
  this out. (Note: a few select changes were not reverted.)
2014-08-07 13:21:15 -05:00
Field G. Van Zee
9526ce9881 Updated copyright headers of emscripten configuration files. 2014-08-06 14:15:34 -05:00
Field G. Van Zee
30833ed71d Minor edits to configurations' make_defs.mk files.
Details:
- Redefined CFLAGS, CFLAGS_NOOPT, and CFLAGS_KERNELS so that CFLAGS_NOOPT
  is defined first and then the other two are defined in terms of
  CFLAGS_NOOPT. This textually cleans up the definitions and makes them a
  little easier to read.
2014-08-06 12:12:03 -05:00
Field G. Van Zee
4c6ceea4be Added CBLAS compatibility layer.
Details:
- Added a new section in bli_config.h files of all configurations for
  enabling CBLAS support. (Currently, the default is for the CBLAS layer
  to be disabled.)
- Added a directory, frame/compat/cblas, to house CBLAS source code. A
  subdirectory 'f77_sub' holds subroutine wrappers corresponding to
  subroutines found in CBLAS that allow calling some BLAS routines with
  the return value passed as the last argument rather than as an actual
  (function) return value. This was probably intended to allow CBLAS to
  avoid the whole f2c debacle altogether. However, since BLIS does not
  assume the presence of a Fortran compiler, we had to provide similar
  routines in C.
- A script, integrate-cblas-tarball.sh, is included to streamline the
  integration of future revisions of the CBLAS source code.
- The current tarball, cblas.tgz, that was used with the above script to
  generate the present set of CBLAS source code is also included.
- Updated blis.h to include necessary CBLAS-related headers.
2014-08-04 15:49:59 -05:00
Field G. Van Zee
5b73e80b71 Merge pull request #16 from Maratyszcza/emscripten
Emscripten port
2014-07-18 12:21:20 -05:00
Field G. Van Zee
7ed415824d Updated copyright headers (continued).
Details:
- Inserted "at Austin" into third clause of license declarations.
  Meant to include this change in previous commit.
2014-07-14 16:14:33 -05:00
Field G. Van Zee
5c2c6c8561 Updated copyright headers to contain "at Austin".
Details:
- Updated copyright headers to include "at Austin" in the name of the
  University of Texas.
- Updated the copyright years of a few headers to 2014 (from 2011 and
  2012).
2014-07-14 16:05:03 -05:00
Marat Dukhan
20690fe301 Emscripten port 2014-07-13 22:50:56 -07:00
Field G. Van Zee
e8ef696928 Added shared library support to build system.
Details:
- Modified top-level Makefile to support building shared (dynamic)
  libraries.
- Updated most configurations' make_defs.mk files to include necessary
  compiler/linker flags needed by top-level Makefile.
- Note that by default, all configurations presently do NOT build
  shared libraries. To enable, one must change the value of
  BLIS_ENABLE_DYNAMIC_BUILD to 'yes'.
2014-07-02 14:59:27 -05:00
Marat Dukhan
b693b0cddc [SC]AXPY kernels for PNaCl 2014-06-22 13:44:25 -07:00
Marat Dukhan
020a831bc5 Code clean-up in PNaCl port 2014-06-19 00:58:26 -07:00
Marat Dukhan
491be4f91e Optimized dot product kernels for PNaCl 2014-06-19 00:45:44 -07:00
Marat Dukhan
4b8e71aab8 Use AR rcs flags for PNaCl target to avoid warning 2014-06-19 00:43:25 -07:00
Marat Dukhan
031deb2a5c PNaCl configuration: use pnacl-ar instead or ar (fixes build issue on Mac) 2014-06-18 03:11:34 -07:00
Marat Dukhan
68a02976e3 Compile pnacl configuration in GNU11 mode to avoid warning about non-standard features 2014-06-18 03:10:25 -07:00
Marat Dukhan
6de2d472d9 CGEMM and ZGEMM kernels for PNaCl 2014-06-15 08:44:31 -04:00
Marat Dukhan
f064711a5e SGEMM and DGEMM kernels for PNaCl 2014-06-15 06:27:37 -04:00
Tyler Smith
00f232f8ed Added single-precision micro-kernel for Knights Corner aka MIC aka Xeon Phi 2014-06-02 13:40:57 -05:00
Tyler Smith
21fb089387 Reverting changes dunnington and reference configs
Now they are unchanged from the main branch of BLIS
2014-05-19 20:38:55 -07:00
Tyler Smith
bde697f75e Add -openmp to ldflags as well 2014-04-04 16:43:44 -05:00
Tyler Smith
c332be8cd4 Added -openmp flag to Xeon Phi build for convenience 2014-04-04 16:37:50 -05:00
Tyler Smith
5ec93bd9a7 Bunch of minor fixes
Removed barrier after unpackm in all level3 blocked variants
Now there is an implicit barrier inside unpackm that only occurs if C is packed (which is usually not the case)

Moved the enabling of the tree barriers into bli_config.h
Fed the default MR and NR for double precision into bli_get_range instead of the number 8
2014-04-04 15:09:10 -05:00
Tyler Smith
2b6848b239 Merge http://github.com/flame/blis
Conflicts:
	kernels/bgq/1/bli_axpyv_opt_var1.c
	kernels/bgq/1/bli_dotv_opt_var1.c
2014-04-04 09:54:54 -05:00
Tyler Michael Smith
4e3eb39aca Some fixes to the bgq config
MR and NR for double complex were wrong
Default fusing factor for double precision was wrong as well
2014-04-04 14:50:03 +00:00
Field G. Van Zee
d27b4f690c Use generic paths for toolchain in POWER7.
Details:
- Fixed issue #4. Thanks to Jeff Hammond for contributing changes.
2014-04-01 12:57:24 -05:00
Tyler Michael Smith
73b3db5948 Some fixes for the bgq configuration 2014-03-26 15:39:05 +00:00
Tyler Smith
2c158fb885 Merge https://github.com/flame/blis
Conflicts:
	frame/1m/packm/bli_packm_blk_var1.c
2014-02-27 16:46:23 -06:00
Tyler Smith
ac5a2de1d1 Merge branch 'master' of https://github.com/tlrmchlsmth/blis 2014-02-27 11:59:33 -06:00
Tyler Smith
01b125e815 First pass at adding parallelism to BLIS.
Added a multithreading infrastructure that should be independent of multithreading implementation in the future.
Currently, gemm blocked variants 1f and 2f, and packm variant blocked variant 1 is parallelized.
2014-02-27 11:55:45 -06:00
Field G. Van Zee
c2b2ab6270 Deprecated panel stride alignment in bli_config.h.
Details:
- Removed BLIS_CONTIG_STRIDE_ALIGN_SIZE from bli_config.h of all
  configurations. It was already going unused in packm_init() since the
  recent 4m/3m commit. This setting was rarely, if ever, useful, and its
  existence only posed a potential risk for 4m/3m-based implementations.
- Removed BLIS_CONTIG_STRIDE_ALIGN_SIZE usage from mem_pool_macro_defs.h.
- Updated comments regarding CONTIG_STRIDE_ALIGN_SIZE in template
  micro-kernels.
2014-02-26 12:46:45 -06:00
Field G. Van Zee
fde5f1fdec Added extensive support for configuration defaults.
Details:
- Standard names for reference kernels (levels-1v, -1f and 3) are now
  macro constants. Examples:
    BLIS_SAXPYV_KERNEL_REF
    BLIS_DDOTXF_KERNEL_REF
    BLIS_ZGEMM_UKERNEL_REF
- Developers no longer have to name all datatype instances of a kernel
  with a common base name; [sdcz] datatype flavors of each kernel or
  micro-kernel (level-1v, -1f, or 3) may now be named independently.
  This means you can now, if you wish, encode the datatype-specific
  register blocksizes in the name of the micro-kernel functions.
- Any datatype instances of any kernel (1v, 1f, or 3) that is left
  undefined in bli_kernel.h will default to the corresponding reference
  implementation. For example, if BLIS_DGEMM_UKERNEL is left undefined,
  it will be defined to be BLIS_DGEMM_UKERNEL_REF.
- Developers no longer need to name level-1v/-1f kernels with multiple
  datatype chars to match the number of types the kernel WOULD take in
  a mixed type environment, as in bli_dddaxpyv_opt(). Now, one char is
  sufficient, as in bli_daxpyv_opt().
- There is no longer a need to define an obj_t wrapper to go along with
  your level-1v/-1f kernels. The framework now prvides a _kernel()
  function which serves as the obj_t wrapper for whatever kernels are
  specified (or defaulted to) via bli_kernel.h
- Developers no longer need to prototype their kernels, and thus no
  longer need to include any prototyping headers from within
  bli_kernel.h. The framework now generates kernel prototypes, with the
  proper type signature, based on the kernel names defined (or defaulted
  to) via bli_kernel.h.
- If the complex datatype x (of [cz]) implementation of the gemm micro-
  kernel is left undefined by bli_kernel.h, but its same-precision real
  domain equivalent IS defined, BLIS will use a 4m-based implementation
  for the datatype x implementations of all level-3 operations, using
  only the real gemm micro-kernel.
2014-02-25 13:34:56 -06:00
Field G. Van Zee
15b51e990f Merge branch 'master' of github.com:fgvanzee/blis 2014-02-21 09:04:32 -06:00
Francisco Igual
d1813c9dee Added new armv7a micro-kernels and configuration files from Werner Saar. 2014-02-21 15:14:31 +01:00
Field G. Van Zee
6363a9f658 Added level-3 support for complex via 4m-/3m.
Details:
- Added the ability to induce complex domain level-3 operations via new
  virtual complex micro-kernels which are implemented via only real
  domain micro-kernels. Two new implementations are provided: 4m and 3m.
  4m implements complex matrix multiplication in terms of four real
  matrix multiplications, where as 3m uses only three and thus is
  capable of even higher (than peak) performance. However, the 3m method
  has somewhat weaker numerical properties, making it less desirable
  in general.
- Further refined packing routines, which were recently revamped, and
  added packing functionality for 4m and 3m.
- Some modifications to trmm and trsm macro-kernels to facilitate indexing
  into micro-panels which were packed for 4m/3m virtual kernels.
- Added 4m and 3m interfaces for each level-3 operation.
- Various other minor changes to facilitate 4m/3m methods.
2014-02-19 17:00:52 -06:00
Tyler Smith
ce06686368 Fixed more Xeon Phi bugs, especially with scattered update 2014-02-14 13:52:18 -06:00
Field G. Van Zee
7aceef7683 Updated comments in macro-kernels.
Details:
- Updated (and fixed some errors in) the "Assumptions/assertions" comment
  section of macro-kernels.
- Changed register blocksizes of reference configuration to MR = 8 and
  NR = 4. It's always good for MR != NR in the reference configuration
  since it may help uncover bugs related to non-square micro-kernels.
2014-02-06 17:31:19 -06:00
Field G. Van Zee
3404e6657e Deprecated incremental blocksize macro const defs.
Details:
- Removed macro constant definitions related to incremental blocksizes
  from all configurations' bli_kernel.h files. This change is minor and
  is mostly a cleanup related to a previous commit.
2014-02-05 11:19:10 -06:00