Commit Graph

1361 Commits

Author SHA1 Message Date
Field G. Van Zee
4f6745d68a Fixed link error when building only shared library.
Details:
- Fixed a linker error that occurred when attempting to compile and link
  the testsuite and/or BLAS test drivers after having configured BLIS to
  only generate a shared library (no static library). The chosen
  solution involved
  (1) adding the local library path, $(BASE_LIB_PATH), to the search
      paths for the shared library via the link option
      -Wl,-rpath,$(BASE_LIB_PATH).
  (2) adding a local symlink to $(BASE_LIB_PATH) that uses the .so major
      version number so that ld would find the shared library at
      execution time.
  Thanks to Sajid Ali for reporting this issue, to Devin Matthews for
  pointing out the need for the -rpath option, and to Devangi Parikh for
  helping Sajid isolate the problem.
- Added #include <ctype.h> to bli_system.h to avoid a compiler warning
  resulting from using toupper() from bli_string.c without a prototype.
  Thanks again to Sajid Ali, whose build log revealed this compiler
  warning.
- Added '*.so.*' to .gitignore.
- CREDITS file update.
2018-08-14 16:50:47 -05:00
Field G. Van Zee
9cb0b023ca INSTALL file update. 2018-08-07 14:21:07 -05:00
Field G. Van Zee
addce08966 Format spec and other updates in test, test/3m4m.
Details:
- Removed the dtime (delta time, or wallclock time) column from the
  matlab output of all test drivers in test, test/3m4m, test/studies.
  This value was rarely (if ever) really needed and usually only served
  to take up screen space.
- Updated format specifier in test/studies/skx to use %7.2f instead of
  %6.3f.
- For the test drivers in 'test' directory, added an initial line of
  output that sets last entry of matlab matrix to zero in order to
  induce a pre-allocation of the entire array of performance results.
2018-08-06 13:18:20 -05:00
Field G. Van Zee
94d5ef42c8 Adjusted gflops format spec in testsuite, test/3m4m.
Details:
- Changed the format specifier for the gflops column in the testsuite
  output from %7.3f to %7.2f. This was done mainly to keep the output
  aligned properly when the expected perfomance exceeded 1000 gflops.
  Also, two decimal places still conveys plenty of precision for all
  practical applications, including just eyeballing performance deltas
  between two executions (let alone two implementations).
- Changed the format specifier for gflops in the test/3m4m drivers
  from %6.3f to %7.2f (for the same reasons listed above).
2018-08-04 15:57:17 -05:00
Devangi N. Parikh
c7ff06bae9 Merge branch 'master' of https://github.com/flame/blis 2018-08-01 14:20:41 -05:00
Devangi N. Parikh
6074082cd3 Fixed bug in bli_cntx_set_packm_ker_dt() implementation.
Details:
- Fixed bug in static function bli_cntx_set_[packm/unpackm]_ker_dt(), which
   were incorrectly calling bli_cntx_get_[packm/unpackm]_ker_dt to get the
   corresponding func_t.
2018-08-01 13:30:51 -05:00
Field G. Van Zee
ebe998d06c Fixed typos in BuildSystem.md from previuos commit. 2018-08-01 13:24:00 -05:00
Field G. Van Zee
e72a344e94 Added table of 'make' targets to BuildSystem.md.
Details:
- Added a new section to BuildSystem.md that describes the most useful
  make targets defined in the top-level Makefile.
2018-08-01 13:00:38 -05:00
Field G. Van Zee
4f60d0288e README.md, comment updates.
Details:
- Added links, and sandbox language to README.md.
- Adjusted some comments in high-level level-3 object functions to make
  clear what bli_thread_init_rntm() does.
2018-07-30 19:22:57 -05:00
Field G. Van Zee
455d3f49e5 Edits to object/typed API, multithreading docs. 2018-07-29 18:31:29 -05:00
Field G. Van Zee
922a1c05e0 More tweaks to README.md. 2018-07-28 20:15:55 -05:00
Field G. Van Zee
a7a0cf2b5d More edits to docs/Multithreading.md. 2018-07-28 16:59:31 -05:00
Field G. Van Zee
be21d0cf68 Fixed typos in docs/Multithreading.md. 2018-07-28 16:46:51 -05:00
Field G. Van Zee
eac07c7b4f Edits to docs/Multithreading.md. 2018-07-28 16:45:28 -05:00
Field G. Van Zee
5438375a03 Fixed link in README.md. 2018-07-28 16:34:21 -05:00
Field G. Van Zee
1f1a237d3f Fixed links in BLISTypedAPI.md. 2018-07-28 16:33:28 -05:00
Field G. Van Zee
89c8806e3a Minor doc fixes to previous commit. 2018-07-28 16:30:56 -05:00
Field G. Van Zee
b8c7574f84 README.md, typed/object API updates.
Details:
- Updated the typed and object APIs to include language on the rntm_t
  parameters in the expert interfaces.
- Updated README to include link to object API.
2018-07-28 16:27:09 -05:00
Field G. Van Zee
29c34c4adb CREDITS file update. 2018-07-27 16:26:19 -05:00
Field G. Van Zee
55a04edf52 CHANGELOG update (0.4.0) 2018-07-27 16:10:46 -05:00
Field G. Van Zee
4ad61ce905 Version file update (0.4.0) 0.4.0 2018-07-27 16:10:43 -05:00
Field G. Van Zee
b86cf13793 Release Notes update in advance of next version. 2018-07-27 16:08:21 -05:00
Field G. Van Zee
a8b4084a0e CREDITS file update. 2018-07-27 16:07:26 -05:00
Field G. Van Zee
8e10cac5f3 Updates to CREDITS, RELEASING, config/README.md.
Details:
- Added individuals' github handles to CREDITS file.
- Updated RELEASING, config/README.md files.
2018-07-27 14:45:35 -05:00
Field G. Van Zee
401b69c8f2 More indentation in docs/ConfigurationHowTo.md. 2018-07-25 17:55:13 -05:00
Field G. Van Zee
1c6a1b921e Trying new indentation in ConfigurationHowTo.md.
Details:
- Modified a few sections to take advantage of a feature of markdown
  that allows a bullet or enumeration to have multiple paragraphs. This
  is a trial run to make sure the indentation looks good when rendered
  in a web browser.
2018-07-25 17:14:58 -05:00
Field G. Van Zee
71f9787195 Whitespace changes to macrokernels' func ptr defs. 2018-07-25 15:55:36 -05:00
Field G. Van Zee
87d57c31c2 Various minor updates to typed, object API docs. 2018-07-25 14:20:18 -05:00
Field G. Van Zee
fb6e16268a Consolidated prototypes in bli_l1v_tapi.h.
Details:
- Consolidated typed API function prototypes in bli_l1v_tapi.h by
  leveraging identical function signatures between operations.
- Removed 'restrict' keyword since it is not actually present in the
  function definitions.
2018-07-25 14:17:28 -05:00
Field G. Van Zee
af60d738f2 Finished object creation part of BLISObjectAPI.md.
Details:
- Filled in remaining section on object creation function reference
  of BLISObjectAPI.md. All object management functions demonstrated as
  part of the example code in examples/oapi are now documented, as well
  as some other functions that are not shown in the example code.
- Updated variuos links (mostly in function index) to correctly point to
  the object API reference instead of the typed API reference.
- Added documentation to getijm, setijm.
2018-07-24 15:35:52 -05:00
Field G. Van Zee
8217a6a3b6 Moved sandbox README.md to docs/Sandboxes.md.
Details:
- Relocated sandbox/ref99/README.md to docs/Sandboxes.md and made minor
  edits to the document.
2018-07-24 13:13:10 -05:00
Field G. Van Zee
b7db293323 Explicitly typecast return vals in static funcs.
Details:
- Added explicit typecasting to various functions (mostly static
  functions), primarily those in bli_param_macro_defs.h,
  bli_obj_macro_defs.h, bli_cntx.h, bli_cntl.h, and a few other header
  files.
- This change was prompted by feedback from Jacob Gorm Hansen, who
  reported that #including "blis.h" from his application caused a
  gcc to output error messages (relating to types being returned
  mismatching the declared return types) when used via the C++ compiler
  front-end. This is the first pass of fixes, and we may need to
  iterate with additional follow-up commits (#233).
2018-07-19 11:14:30 -05:00
Field G. Van Zee
fa08e5ead9 Fixed minor issues in ecbebe7 with mt disabled.
Details:
- Fixed an unused variable warning in frame/base/bli_rntm.c when
  multithreading is disabled.
- Fixed a missing variable declaration in bli_thread_init_rntm_from_env()
  when multithreading is disabled.
2018-07-17 19:02:15 -05:00
Field G. Van Zee
ecbebe7c2e Defined rntm_t to relocate cntx_t.thrloop (#235).
Details:
- Defined a new struct datatype, rntm_t (runtime), to house the thrloop
  field of the cntx_t (context). The thrloop array holds the number of
  ways of parallelism (thread "splits") to extract per level-3
  algorithmic loop until those values can be used to create a
  corresponding node in the thread control tree (thrinfo_t structure),
  which (for any given level-3 invocation) usually happens by the time
  the macrokernel is called for the first time.
- Relocating the thrloop from the cntx_t remedies a thread-safety issue
  when invoking level-3 operations from two or more application threads.
  The race condition existed because the cntx_t, a pointer to which is
  usually queried from the global kernel structure (gks), is supposed to
  be a read-only. However, the previous code would write to the cntx_t's
  thrloop field *after* it had been queried, thus violating its read-only
  status. In practice, this would not cause a problem when a sequential
  application made a multithreaded call to BLIS, nor when two or more
  application threads used the same parallelization scheme when calling
  BLIS, because in either case all application theads would be using
  the same ways of parallelism for each loop. The true effects of the
  race condition were limited to situations where two or more application
  theads used *different* parallelization schemes for any given level-3
  call.
- In remedying the above race condition, the application or calling
  library can now specify the parallelization scheme on a per-call basis.
  All that is required is that the thread encode its request for
  parallelism into the rntm_t struct prior to passing the address of the
  rntm_t to one of the expert interfaces of either the typed or object
  APIs. This allows, for example, one application thread to extract 4-way
  parallelism from a call to gemm while another application thread
  requests 2-way parallelism. Or, two threads could each request 4-way
  parallelism, but from different loops.
- A rntm_t* parameter has been added to the function signatures of most
  of the level-3 implementation stack (with the most notable exception
  being packm) as well as all level-1v, -1d, -1f, -1m, and -2 expert
  APIs. (A few internal functions gained the rntm_t* parameter even
  though they currently have no use for it, such as bli_l3_packm().)
  This required some internal calls to some of those functions to
  be updated since BLIS was already using those operations internally
  via the expert interfaces. For situations where a rntm_t object is
  not available, such as within packm/unpackm implementations, NULL is
  passed in to the relevant expert interfaces. This is acceptable for
  now since parallelism is not obtained for non-level-3 operations.
- Revamped how global parallelism is encoded. First, the conventional
  environment variables such as BLIS_NUM_THREADS and BLIS_*_NT  are only
  read once, at library initialization. (Thanks to Nathaniel Smith for
  suggesting this to avoid repeated calls getenv(), which can be slow.)
  Those values are recorded to a global rntm_t object. Public APIs, in
  bli_thread.c, are still available to get/set these values from the
  global rntm_t, though now the "set" functions have additional logic
  to ensure that the values are set in a synchronous manner via a mutex.
  If/when NULL is passed into an expert API (meaning the user opted to
  not provide a custom rntm_t), the values from the global rntm_t are
  copied to a local rntm_t, which is then passed down the function stack.
  Calling a basic API is equivalent to calling the expert APIs with NULL
  for the cntx and rntm parameters, which means the semantic behavior of
  these basic APIs (vis-a-vis multithreading) is unchanged from before.
- Renamed bli_cntx_set_thrloop_from_env() to bli_rntm_set_ways_for_op()
  and reimplemented, with the function now being able to treat the
  incoming rntm_t in a manner agnostic to its origin--whether it came
  from the application or is an internal copy of the global rntm_t.
- Removed various global runtime APIs for setting the number of ways of
  parallelism for individual loops (e.g. bli_thread_set_*_nt()) as well
  as the corresponding "get" functions. The new model simplifies these
  interfaces so that one must either set the total number of threads, OR
  set all of the ways of parallelism for each loop simultaneously (in a
  single function call).
- Updated sandbox/ref99 according to above changes.
- Rewrote/augmented docs/Multithreading.md to document the three methods
  (and two specific ways within each method) of requesting parallelism
  in BLIS.
- Removed old, disabled code from bli_l3_thrinfo.c.
- Whitespace changes to code (e.g. bli_obj.c) and docs/BuildSystem.md.
2018-07-17 18:37:32 -05:00
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