Commit Graph

1886 Commits

Author SHA1 Message Date
Devangi N. Parikh
323eaaab99 Removed left over code from plotting scripts. 2018-07-13 11:40:06 -05:00
Field G. Van Zee
60c1977364 Documented accessor functions in BLISObjectAPI.md.
Details:
- Added documentation to docs/BLISObjectAPI.md for a handful of
  commonly-used obj_t accessor functions.
- Minor updates to docs/BLISTypedAPI.md.
2018-07-12 19:22:14 -05:00
Devangi N. Parikh
77327ad796 Merge branch 'master' of https://github.com/flame/blis 2018-07-12 17:09:33 -05:00
Devangi N. Parikh
73b0b2a3ac Created hardware-specific test driver directory.
Details:
- Created a 'studies' subdirectory within 'test' to be used to house
   test drivers, makefiles, run scripts, matlab plot code, and related
   files that have been customized for collecting performance data on
   specific host machines or product lines. This new setup will help us
   catalog, track, and share test driver materials over time, and in a
   way that facilitates reproducibility.
- Created an 'skx' subdirectory within 'test/studies' to house various
   level-3 test driver files used to measure performance on SkylakeX
   nodes (specifically, those nodes used by TACC's stampede2 system).
2018-07-12 16:58:41 -05:00
Field G. Van Zee
9fef85756d Cleaned up loose ends in BLISObjectAPI.md.
Details:
- Deleted some lines from the API function signatures that did not
  belong (and were only left over from the copy-paste of the typed API).
- Fixed some paragraph-in-bullet indentation.
2018-07-11 18:40:30 -05:00
Field G. Van Zee
80ddeae462 Added BLISObjectAPI.md to docs.
Details:
- Added first draft of BLISObjectAPI.md. (Object management section is
  still missing.)
- Small fixes to BLISTypedAPI.md found while writing BLISObjectAPI.md.
- In various .md files, changed ``` verbatim blocks to language
  attributes (e.g. ```c for C code).
2018-07-11 18:31:57 -05:00
Field G. Van Zee
038442add3 Added -lpthread to makefile example in BuildSystem.md.
Details:
- Added missing pthreads library linking to example makefile in
  docs/BuildSystem.md, as well as similar language to build requirements
  at the beginning of the document. Thanks to Stefanos Mavros for
  bringing this to our attention.
- Updated CREDITS file.
2018-07-11 12:24:18 -05:00
Field G. Van Zee
bf10d8624e Small updates to KernelsHowTo.md, BLISTypedAPI.md.
Details:
- Minor updates to BLISTypedAPI.md, mostly to bring terminology
  up-to-date with the new "typed API" classification.
- Added contents section to KernelsHowTo.md.
2018-07-09 18:40:13 -05:00
Field G. Van Zee
1fd3bce59e Further updates to KernelsHowTo.md, BLISTypedAPI.md.
Details:
- Added missing level-1v operations to BLISTypedAPI (e.g. axpbyv,
  xpbyv).
- Updated broken linkes in KernelsHowTo.md based on misnamed anchors.
- Other minor changes.
2018-07-09 18:20:11 -05:00
Field G. Van Zee
c40d30a6c9 Updated KernelsHowTo.md, BLISTypedAPI.md.
Details;
- Added missing (basic) information in KernelsHowTo.md for level-1f and
  level-1v kernels.
- Updated section regarding contexts.
2018-07-09 17:55:54 -05:00
Field G. Van Zee
f8913c2bf9 Fixed outdated scalv() calls in penryn l1f kernels.
Details:
- Fixed stale calls to dscalv() from the dotxf and dotxaxpyf penryn
  kernels that were not updated during the basic/expert API separation
  in e88aeda.
2018-07-07 20:35:13 -05:00
Field G. Van Zee
e78e71d549 Added README.md mention/link to examples/tapi.
Details:
- Added language to README.md to bring the reader's attention to the
  example code for the typed API (in addition to those for the object
  API).
2018-07-07 20:18:09 -05:00
Field G. Van Zee
419ffb1585 Updates to README.md.
Details:
- Updated wiki links according to renamed/relocated files in 'docs'.
- Converted links to relative paths.
- Added link to docs/Multithreading.md.
2018-07-07 20:14:23 -05:00
Field G. Van Zee
7d3e8a7e5f Reverted docs/*.md links to relative paths.
Details:
- Within the documents in docs/*.md, reverted links to other local
  documents to relative paths.
- Fixed some links/documents that did not yet have the '.md' suffix.
- Testing whether we can use relative links ('docs/BLISTypedAPI.md')
  from within README.md.
2018-07-07 20:01:29 -05:00
Field G. Van Zee
d97c862c2b Updated links (URLs) in docs/*.md.
Details:
- Updated most markdown links in the documents/wikis to use absolute
  paths instead of the relative paths that were in use previously.
  A few links were not updated, except for adding a ".md" to reflect
  the documents' new names, in order to test whether relative
  linking still works.
2018-07-07 19:40:41 -05:00
Field G. Van Zee
3a0c121358 Merge branch 'dev' 2018-07-07 16:51:38 -05:00
Field G. Van Zee
bcacddfad7 Added 'docs' directory with wiki markdown files.
Details:
- Exported all github wikis to a new 'docs' directory.
- Renamed 'BLISAPIQuickReference' wiki to 'BLISTypedAPI' and removed
  all cntx_t* arguments from the (now non-expert) APIs (with the
  exception of the kernel APIs).
- Added section to BuildSystem documenting new ARG_MAX hack.
2018-07-07 16:45:29 -05:00
Field G. Van Zee
3ee2bc0f7a Renamed files that distinguish basic/expert APIs.
Details:
- Renamed various files that were previously named according to a
  "with context" or "without context" convention. For example, the
  following files in frame/3 were renamed:

    frame/3/bli_l3_oapi_woc.c -> frame/3/bli_l3_oapi_ba.c
    frame/3/bli_l3_oapi_wc.c  -> frame/3/bli_l3_oapi_ex.c
    frame/3/bli_l3_tapi_woc.c -> frame/3/bli_l3_tapi_ba.c
    frame/3/bli_l3_tapi_wc.c  -> frame/3/bli_l3_tapi_ex.c

  Here, the "ba" is for "basic" and "ex" is for "expert". This new
  naming scheme will make more sense especially if/when additional
  expert parameters are added to the expert APIs (typed and object).
2018-07-07 16:02:16 -05:00
Field G. Van Zee
e88aedae73 Separated expert, non-expert typed APIs.
Details:
- Split existing typed APIs into two subsets of interfaces: one for use
  with expert parameters, such as the cntx_t*, and one without. This
  separation was already in place for the object APIs, and after this
  commit the typed and object APIs will have similar expert and non-
  expert APIs. The expert functions will be suffixed with "_ex" just as
  is the case for expert interfaces in the object APIs.
- Updated internal invocations of typed APIs (functions such as
  bli_?setm() and bli_?scalv()) throughout BLIS to reflect use of the
  new explictly expert APIs.
- Updated example code in examples/tapi to reflect the existence (and
  usage) of non-expert APIs.
- Bumped the major soname version number in 'so_version'. While code
  compiled against a previous version/commit will likely still work
  (since the old typed function symbol names still exist in the new API,
  just with one less function argument) the semantics of the function
  have changed if the cntx_t* parameter the application passes in is
  non-NULL. For example, calling bli_daxpyv() with a non-NULL context
  does not behave the same way now as it did before; before, the
  context would be used in the computation, and now the context would
  be ignored since the interace for that function no longer expects a
  context argument.
2018-07-06 19:14:02 -05:00
Isuru Fernando
331694e524 Fix windows build and enable x86_64 on appveyor (#230)
* Upload artifacts built on appveyor (#228)

* Upload artifacts

* Fix install in appveyor

* Remove windows.h in bli_winsys.c (#229)

Looks like it is unneeded.

* Implemented ARG_MAX hack in configure, Makefile.

Details:
- Added support for --enable-arg-max-hack to configure, which will
  change the behavior of make when building BLIS so that rather than
  invoke the archiver/linker with all of the object files as command
  line arguments, those object files are echoed to a temporary file
  and then the archiver/linker is fed that temporary file via the @
  notation. An example of this can be found in the GNU make docs at
  https://www.gnu.org/software/make/manual/make.html#File-Function
- Thanks to Isuru Fernando for prompting this feature.

* Enable x86_64 and arg-max-hack on appveyor

* Use gas style assembly for clang on windows
2018-07-06 10:07:38 -05:00
Devin Matthews
a64a780d28 Merge pull request #231 from flame/travis-pr
Disable SDE for PRs
2018-07-06 09:38:42 -05:00
Devin Matthews
3cb396d1ae Disable SDE for PRs
Pull requests cannot use Travis secret variables, so SDE needs to be disabled. This PR should suffice as a test.
2018-07-06 09:19:44 -05:00
Field G. Van Zee
2c7960c841 Implemented ARG_MAX hack in configure, Makefile.
Details:
- Added support for --enable-arg-max-hack to configure, which will
  change the behavior of make when building BLIS so that rather than
  invoke the archiver/linker with all of the object files as command
  line arguments, those object files are echoed to a temporary file
  and then the archiver/linker is fed that temporary file via the @
  notation. An example of this can be found in the GNU make docs at
  https://www.gnu.org/software/make/manual/make.html#File-Function
- Thanks to Isuru Fernando for prompting this feature.
2018-07-05 14:38:33 -05:00
Field G. Van Zee
c422a5cd19 Merge branch 'dev' 2018-07-05 12:33:35 -05:00
Isuru Fernando
b6470262ea Remove windows.h in bli_winsys.c (#229)
Looks like it is unneeded.
2018-07-04 20:14:29 -05:00
Isuru Fernando
eac4bdf986 Upload artifacts built on appveyor (#228)
* Upload artifacts

* Fix install in appveyor
2018-07-04 19:31:01 -05:00
Field G. Van Zee
89e178ce38 Merge branch 'master' into dev 2018-07-04 17:51:16 -05:00
Field G. Van Zee
e32b2ef983 Update to CREDITS file. 2018-07-04 17:49:39 -05:00
Isuru Fernando
14648e1376 Native windows support using clang (#227)
* Add appveyor file

* Build script

* Remove fPIC for now

* copy as

* set CC and CXX

* Change the order of immintrin.h

* Fix testsuite header

* Move testsuite defs to .c

* Fix appveyor file

* Remove fPIC again and fix strerror_r missing bug

* Remove appveyor script

* cd to blis directory

* Fix sleep implementation

* Add f2c_types_win.h

* Fix f2c compilation

* Remove rdp and rename appveyor.yml

* Remove setenv declaration in test header

* set CPICFLAGS to empty

* Fix another immintrin.h issue

* Escape CFLAGS and LDFLAGS

* Fix more ?mmintrin.h issues

* Build x86_64 in appveyor

* override LIBM LIBPTHREAD AR AS

* override pthreads in configure

* Move windows definitions to bli_winsys.h

* Fix LIBPTHREAD default value

* Build intel64 in appveyor for now
2018-07-04 17:48:42 -05:00
Field G. Van Zee
b45ea92fc6 Added typed (BLAS-like) API code examples.
Details:
- Added new example code to examples/tapi demonstrating how to use the
  BLIS typed API. These code examples directly mirror the corresponding
  example code files in examples/oapi. This setup provides a convenient
  opportunity for newcomers to BLIS to compare and contrast the typed
  and object APIs when they are used to perform the same tasks.
- Minor cleanups to examples/oapi.
2018-07-03 18:27:29 -05:00
Field G. Van Zee
d868eb3e20 Implemented bli_obj_scalar_cast_to().
Details:
- Implemented bli_obj_scalar_cast_to(), which will typecast the value in
  the internal scalar of an obj_t to a specified datatype.
- Changed bli_obj_scalar_attach() so that the scalar value being attached
  is first typecast to the storage datatype of the destination object
  rather than the target datatype.
- Reformatted function type signatures in bli_obj_scalar.c as well as
  prototypes  in its corresponding header file.
2018-06-29 12:36:04 -05:00
Field G. Van Zee
52d80b5f09 Fixed static funcs related to target and exec dts.
Details:
- Fixed incorrect bit shifts in the following static functions:
    bli_obj_set_target_domain()
    bli_obj_set_target_prec()
    bli_obj_set_exec_domain()
    bli_obj_set_exec_prec()
- Fixed incorrect bitmask in bli_dt_proj_to_single_prec().
- Updated bli_obj_real_part() and bli_obj_imag_part() so that it updates
  the target and exec datatypes (in addition to the storage datatypes).
2018-06-29 12:30:44 -05:00
Field G. Van Zee
e006f2d0ee Merge branch 'dev' of github.com:flame/blis into dev 2018-06-27 15:54:38 -05:00
Field G. Van Zee
bd8c55fe26 Added dt_on_output field to auxinfo_t.
Details:
- Added a new field to the auxinfo_t struct that can be used, in theory,
  to request type conversion before the microkernel stores/accumulates
  its microtile back to memory.
- Added the appropriate get/set static functions to bli_type_defs.h.
2018-06-27 15:52:37 -05:00
Devin Matthews
dafca7a0c2 Fix botched memory addressing in Penryn kernel (no effect for GAS output). 2018-06-25 16:20:10 -05:00
Devin Matthews
de493b0f34 Merge pull request #226 from devinamatthews/dev
Finish macroization of assembly ukernels.
2018-06-25 14:26:06 -05:00
Field G. Van Zee
195480beb5 Merge branch 'master' into dev 2018-06-25 13:24:21 -05:00
Field G. Van Zee
3f387ca35e Fixed bugs in configure's select_cc() function.
Details:
- This commit fixes several bugs in configure relating to selecting a C
  compiler. By dumb luck, two of the two bugs sort of cancelled each
  other out in most use cases, which manifested as the expected behavior.
  Thanks to Mathieu Poumeyrol for bringing this issue to our attention,
  and to Devin Matthews for suggesting the more portable way of
  capturing both stdout and stderr and suggesting a return code check
  instead of testing stdout/stderr.
- The first bug: As the values of the compiler search list are iterated
  over, only stderr is captured when querying a compiler with --version
  rather than both stdout and stderr.
- The second bug: After each query, a conditional attempted to test
  whether the query resulted in anything being output. That conditional
  erroneously was using "-z" instead of "-n" for non-emptiness. Thus,
  most of the time, stderr was empty (because the --version info was
  being output on stdout), and since it was empty, the -z conditional
  (intended to execute only when a compiler was found to be responsive)
  executed.
- A third bug was also fixed in the way that the merged stdout/stderr
  output was tested for non-emptiness (moving the 'cat' invocation to
  another line and testing the contents of a variable instead).
- The three bugs above have been fixed as part of a partial rewrite of
  the select_cc() function in terms of a return code check, which
  obviated the need to save the output of stdout and stderr.
- The fourth bug involved a misnamed variable in the right-hand side
  of a statement intended to prepend CC to search_list when CC was
  non-empty. This typically did not manifest as a bug since usually CC
  (if it was set) was set to a value that was known to work.
2018-06-25 12:32:03 -05:00
Devin Matthews
a7166feb10 Finish macroization of assembly ukernels. 2018-06-25 12:09:18 -05:00
Field G. Van Zee
f986396c2a Added 'configure --help' text for CFLAGS, LDFLAGS.
Details:
- Added mention of the new support for preset CFLAGS, LDFLAGS to the
  bottom of the text output by './configure --help'.
- Updated usage example to use 'haswell' instead of 'sandybridge'.
2018-06-22 18:12:40 -05:00
Field G. Van Zee
884175d9ff Added configure support for preset CFLAGS, LDFLAGS.
Details:
- Any preexisting values set to the CFLAGS environment variable (or the
  CFLAGS variable if given on the command line) are saved by configure
  for later inclusion (prepending, to be precise) along with the
  compiler flags automatically determined by the BLIS build system.
  LDFLAGS is treated in a similar manner.) Thanks to Dave Love for
  requesting this feature in issue #223 and Mathieu Poumeyrol for his
  support on this and a previous related issue.
- Comment updates to build/config.mk.in.
- Strip whitespace from return value of various cflags functions in
  common.mk.
2018-06-22 18:08:43 -05:00
Field G. Van Zee
07c3d0a951 Update to CREDITS file. 2018-06-21 12:35:07 -05:00
Devin Matthews
a1ebbbf158 Merge pull request #224 from devinamatthews/asm-macros
Asm macros
2018-06-20 15:37:53 -05:00
Devin Matthews
c81c6f23b9 Fix problem with inc and dec macros. 2018-06-20 15:20:44 -05:00
Devin Matthews
5a63971c82 Merge remote-tracking branch 'upstream/dev' into asm-macros 2018-06-20 14:07:49 -05:00
Devin Matthews
b4d94e54d4 Convert x86 microkernels to assembly macros. 2018-06-20 14:07:24 -05:00
Field G. Van Zee
17928b1c99 Added static funcs bli_dt_domain(), bli_dt_prec().
Details:
- Added definitions of static functions bli_dt_domain()/bli_dt_prec(),
  which extract a dom_t domain or prec_t precision value, respectively,
  from a num_t datatype.
- Changed the return types of bli_obj_domain() and bli_obj_prec() from
  objbits_t to dom_t and prec_t. (Not sure why they were ever set to
  return objbits_t.)
2018-06-19 17:59:03 -05:00
Field G. Van Zee
5f7fbb7115 Static funcs for projecting dt to single/double.
Details:
- Added static functions for projecting a datatype to single precision
  or double precision, both for obj_t's storage datatypes and standalone
  datatypes.
2018-06-19 15:38:55 -05:00
Field G. Van Zee
d4a22702c7 Set up haswell config for optional col-pref ukrs.
Details:
- Added two presently-disabled cpp blocks in bli_cntx_init_haswell.c to
  easily allow one to switch to a set of column-preferential gemm
  microkernels (in the haswell subconfiguration). The second column-
  preferring block sets the the register blocksizes to their appropriate
  values. However, cache blocksizes are left unchanged, and therefore are
  likely suboptimal. This should be addressed later.
2018-06-19 14:54:57 -05:00
Field G. Van Zee
f317c2e31b Added get/set static funcs for exec dt/dom/prec.
Details:
- Added functions to bli_obj_macro_defs.h to get and set the target
  domain and target precision bits in the obj_t, and also added the
  appropriate support in bli_type_defs.h.
2018-06-19 12:21:23 -05:00