Commit Graph

365 Commits

Author SHA1 Message Date
Field G. Van Zee
fcec68cda3 Merge branch 'master' of github.com:flame/blis 2014-07-14 11:35:34 -05:00
Field G. Van Zee
94c0df797e Changed order of zero dim / error checking.
Details:
- Updated level-2 and level-3 internal back-ends so that the operation's
  _check() function is called BEFORE any attempt to return early due to
  the presence of zero dimensions. This ordering makes more sense because
  (for example) object dimensions should match even if one of them is
  zero. Previously, a dimension mismatch could result in an early return
  with no error message.
- Updated bli_check_object_buffer() so that NULL buffers result in an
  error only if the object is dimensionally non-empty (i.e., only if both
  of the object's dimensions are non-zero). This allows BLIS operations
  to be performed on dimensionally empty objects (i.e., where at least one
  dimension is zero).
- Updated the error message associated with bli_check_object_buffer()
  to mention the newly relaxed constraint mentioned above, vis-a-vis
  non-zero dimensions.
2014-07-14 11:24:36 -05:00
Field G. Van Zee
4a20ed1a3f Merge pull request #14 from Maratyszcza/master
Support "make test" for PNaCl configuration
2014-07-13 17:45:01 -05:00
Field G. Van Zee
6a515e988f Implemented dsdot() and sdsdot() in compat layer.
Details:
- Replaced "not yet implemented" error messages in dsdot() and sdsdot()
  with actual implementations. (These routines are so rarely used that
  this log message will probably lead to some people learning of their
  existence for the first time.)
2014-07-13 17:38:33 -05:00
Field G. Van Zee
255668ddd1 Inserted gemv beta-scaling bug into compat layer.
Details:
- BLAS has a peculiar bug (or feature) whereby calling gemv on a vector
  y of non-zero length and a vector x of zero length results in no action.
  Given that the operation is y := beta*y + A*x, many (most?) individuals
  would expect vector y to still be scaled by beta. BLIS, when called
  natively, handles these cases intuitively (with beta scaling).
  Unfortunately, many BLAS test suites actually check for the way this
  situation is handled. Therefore, we have decided to implement this "bug"
  in the compatibility layer so as to provide "bug-for-bug" compatibility
  with BLAS.
2014-07-13 17:30:44 -05:00
Field G. Van Zee
570a154581 Comment/formatting updates to build scripts.
Details:
- Minor updates to comments and formatting in bump-version.sh and
  update-version-file.sh scripts.
2014-07-12 17:51:05 -05:00
Field G. Van Zee
26cd819906 Added bli_info_*() query functions.
Details:
- Added a new API family, bli_info_*(), which can be used to query
  information about how BLIS was configured. Most of these values are
  returned as gint_t, with the exception of the version string which
  is char*.
- Changed how the testsuite driver queries information about how BLIS
  was configured (from using macro constants directly to using the
  new bli_info API).
- Removed bli_version.c and its header file.
- Added STRINGIFY_INT() macro to bli_macro_defs.h
- Renamed info_t type in bli_type_defs.h to objbits_t (not because of
  an actual naming conflict, but because the name 'info_t' would now be
  somewhat misleading in the presence of the new bli_info API, as the
  two are unrelated).
2014-07-10 13:16:07 -05:00
Field G. Van Zee
970b431416 Minor bugfixes to BLAS compatibility layer.
Details:
- Changed bla_amax.c so that i?amax() routines now correctly return 0
  if ( n < 1 || incx <= 0 ).
- Changed bla_rotg.c and bla_rotmg.c to use bli_fabs() macro instead of
  f2c's abs() macro for float and double cases.
- Thanks to Murtaza Ali for suggesting the two fixes above.
- Updated label of fnormv to normfv in testsuite/input.operations.
2014-07-10 09:30:00 -05:00
Marat Dukhan
8ccdfaef4c Replicated logic from testsuite/Makefile in top-level Makefile to support make test 2014-07-08 23:14:36 -07:00
Field G. Van Zee
caa6507ff3 Minor cleanup to standalone test drivers.
Details:
- Very minor code changes to standalone test drivers in 'test' directory.
- Added *.so files to '.gitignore'.
2014-07-08 10:25:27 -05:00
Field G. Van Zee
6c65e9a58f Merge branch 'master' of github.com:flame/blis 2014-07-08 10:13:49 -05:00
Field G. Van Zee
cb12e456f9 Fixed possible level-3 inf/NaN issue when beta=0.
Details:
- Redefined xpbys_mxn and xpbys_mxn_u/_l macros to employ a copy
  (instead of scaling by beta) when beta is zero. This will stamp out
  any possible infs or NaNs in the output matrix, if it happens to be
  uninitialized. Thanks to Tony Kelman for isolating this bug.
2014-07-08 10:07:46 -05:00
Tyler Smith
daca500db5 Merge branch 'master' of http://github.com/flame/blis 2014-07-03 12:52:52 -05:00
Field G. Van Zee
4702350278 Defined _ukernel_void() wrappers to micro-kernels.
Details:
- Added wrappers for micro-kernels so that users may invoke the
  micro-kernels without knowing what the function names actually are.
  This is useful when an application wishes to call the micro-kernel
  from a shared library instance of BLIS, where the application may not
  necessarily have the luxury of grabbing the micro-kernel name(s) from
  C preprocessor macros at compile-time. Also, since the wrappers use
  void* pointers, one's environment does not need to be aware of some
  BLIS types such as scomplex and dcomplex. These wrappers now join the
  level-1 and level-1f kernel wrappers, which pre-dated this commit.
- Removed the wrapper definitions and prototypes from the micro-kernel
  test suite modules, and replaced calls to them with calls to the new
  wrappers mentioned above.
2014-07-03 11:48:23 -05:00
Tyler Smith
ab3bc9153b Fixed a bug for TRSM when BLIS_ENABLE_MULTITHREADING is not set but the multithreading environment variables are turned on 2014-07-03 11:19:43 -05:00
Tyler Smith
b8134b720b Quick and dirty multithreading for TRSM
Should work fine for small number of threads (up to 8 or maybe even 16).
However, performance is yet untested.
This parallelizes the "JR" loop for the left sided cases
and the "IR" loop for the right sided cases.

Future work is to parallelize the outer loops as well.
2014-07-02 16:02:39 -05: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
Field G. Van Zee
b80df0f2cf Added bump-version.sh script to 'build' directory.
Details:
- Added a bash script, bump-version.sh, to aid in incrementing the BLIS
  version string.
2014-06-23 13:52:39 -05:00
Field G. Van Zee
9ef1f1e21d CHANGELOG update (0.1.3) 2014-06-23 13:48:17 -05:00
Field G. Van Zee
036cc63491 Version file update (0.1.3) 0.1.3 2014-06-23 13:48:17 -05:00
Field G. Van Zee
09d9a3bf67 Reverting version file to test new version script.
Details:
- Changed version file contents to 0.1.2 so that I can test out a new
  version file bumping script.
2014-06-23 13:43:26 -05:00
Field G. Van Zee
ebb3396598 Added 'version' file. 2014-06-23 11:22:50 -05:00
Field G. Van Zee
2cb9a5501a Removed 'version' from .gitignore file. 2014-06-23 10:42:29 -05:00
Field G. Van Zee
b40dcefc5e Merge pull request #11 from Maratyszcza/stable
[sc]axpy kernels for PNaCl
2014-06-23 10:39:05 -05:00
Marat Dukhan
b693b0cddc [SC]AXPY kernels for PNaCl 2014-06-22 13:44:25 -07:00
Field G. Van Zee
7101a8eec0 Merge pull request #10 from Maratyszcza/stable
Portable Native Client port
2014-06-19 21:46:50 -05: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
6f8462eb0e Fix inconsistent VERBOSE macro in Makefile 2014-06-18 03:08:46 -07:00
Marat Dukhan
b2ffb4de8b Reformatted PNaCl GEMM kernels 2014-06-15 18:41:30 -04: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
Field G. Van Zee
ad48dca229 Merge pull request #9 from tkelman/memalign_windows
Use _aligned_malloc instead of posix_memalign on Windows
2014-06-14 15:10:13 -05:00
Tony Kelman
7118f87e18 Use _aligned_malloc instead of posix_memalign on Windows 2014-06-14 06:53:20 -07:00
Tyler Smith
ee2b679281 Only include omp.h if BLIS_ENABLE_OPENMP is set 2014-06-06 12:41:55 -05:00
Field G. Van Zee
19c05dfaac CHANGELOG update (for 0.1.2). 2014-06-05 10:54:16 -05:00
Tyler Smith
00f232f8ed Added single-precision micro-kernel for Knights Corner aka MIC aka Xeon Phi 0.1.2 2014-06-02 13:40:57 -05:00
Field G. Van Zee
3fc60e4914 Fixed ldim alignment bug in core2 gemm ukernel.
Details:
- Fixed a bug in the dunnington/core2 gemm micro-kernels that resulted in
  a segmentation fault if a column-stored matrix's starting address was
  aligned, but its leading dimension was such that its second column was
  unaligned. Basically, the micro-kernel was assuming that aligned load
  instructions were safe when they actually were not. An extra condition
  that checks the alignment of cs_c (ie: the leading dimension in the
  column storage case) has now been added. Thanks to Michael Lehn for
  reporting this bug.
2014-05-21 11:34:42 -05:00
Field G. Van Zee
77a2d8dac8 Merge pull request #8 from tlrmchlsmth/master
Added multithreading to most level-3 operations.
2014-05-20 09:53:19 -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
8a0ef0e0db Fixed rounding error in bli_get_range_weighted 2014-05-16 13:44:14 -05:00
Tyler Smith
0b4b168033 Fixed bug with disabling JC loop threading for right sided trmm 2014-05-16 12:23:37 -05:00
Tyler Smith
5c048a90d8 Disabled parallelism for right-sided TRMM JC loop
The loop has dependent iterations.
2014-05-14 16:20:06 -05:00
Tyler Smith
13a4c717ed Fixed bug with bli_get_range_weighted 2014-05-14 14:59:04 -05:00
Tyler Smith
45957cc774 Allowed threading to be turned off
No longer requires OpenMP to compile
Define the following in bli_config.h in order to enable multithreading:
BLIS_ENABLE_MULTITHREADING
BLIS_ENABLE_OPENMP

Also fixes a bug with bli_get_range_weighted
2014-05-13 17:14:46 -05:00
Tyler Smith
bd1dc98ce5 Disabled multithreading of the kc loop 2014-05-12 17:26:19 -05:00
Tyler Smith
456df03721 Replaced register blocksize hack with querying the register blocksize for determining parallelism granularity 2014-04-30 12:28:00 -05:00