Skip to content
Field G. Van Zee edited this page Aug 26, 2019 · 24 revisions

All of the following documents are present within the BLIS source distribution, usually in the docs directory. We link to them here for your markdown-rendering convenience.

Documents for everyone:

  • Build System. This document covers the basics of configuring and building BLIS libraries. Other topics such as installing and linking against BLIS, running basic checks/tests, and uninstalling are also covered.
  • Testsuite. This document describes how to run BLIS's highly parameterized and configurable test suite, walks through all of its options (general and operation-specific), and how to interpret the results. A brief explanation of the BLIS's netlib BLAS test drivers is also included.
  • BLIS Typed API Reference. Here we document the so-called "typed" (or BLAS-like) API. This is the API that many users who are already familiar with the BLAS will likely want to use. (The other main API in BLIS is the object API.) You may find lots of example code for the typed API in the examples/tapi directory included in the BLIS source distribution.
  • BLIS Object API Reference. Here we document the object API. This is API abstracts away properties of vectors and matrices within obj_t structs that can be queried with accessor functions. Thanks to this abstraction, many developers and experts prefer this API over the typed API. You may find lots of example code for the object API in the examples/oapi directory included in the BLIS source distribution.
  • Hardware Support. This document maintains a table of supported microarchitectures, which includes the corresponding sub-configurations as well as the specific kernels supported for each type of hardware.
  • Multithreading. This document describes how to use the multithreading features of BLIS, the methods of requesting parallelism, and the underlying way that BLIS expresses parallelism within level-3 operations.
  • Mixed-Datatype. This document provides an overview of BLIS's mixed-datatype functionality and provides a brief example of how to take advantage of this new code.
  • Performance. This document reports empirically measured performance of a representative set of level-3 operations on a variety of hardware architectures, as implemented within BLIS and other BLAS libraries for all four of the standard floating-point datatypes.
  • PerformanceSmall. This document reports empirically measured performance of gemm on select hardware architectures within BLIS and other BLAS libraries when performing matrix problems where one or two dimensions is exceedingly small.
  • Release Notes. This document tracks a summary of changes included with each new version of BLIS, along with contributor credits for key features.
  • Frequently Asked Questions. If you have general questions about BLIS, please read this FAQ. If you can't find the answer to your question, please feel free to join the blis-devel mailing list and post a question. We also have a blis-discuss mailing list that anyone can post to (even without joining).

Documents for github contributors:

  • Contributing bug reports, feature requests, PRs, etc. Interested in contributing to BLIS? Please read this document before getting started. It provides a general overview of how best to report bugs, propose new features, and offer code patches.
  • Coding Conventions. If you are interested or planning on contributing code to BLIS, please read this document so that you can format your code in accordance with BLIS's standards. (We won't turn away code contributions that are not 100% in compliance with these standards, but following these guidelines as much as possible will be sincerely appreciated by the project maintainers.)

Documents for BLIS developers:

  • Kernels Guide. If you would like to learn more about the types of kernels that BLIS exposes, their semantics, the operations that each kernel accelerates, and various implementation issues, please read this guide. (It currently focuses on level-3 microkernels, though in the future the details of level-1v and -1f kernels will be filled in. In the meantime, if you would like to learn more about level-1v/-1f kernels, please find and study an existing implementation in the kernels directory.)
  • Configuration Guide. If you would like to learn how to add new sub-configurations or configuration families, or are simply interested in learning how BLIS organizes its configurations and kernel sets, please read this thorough walkthrough of the configuration system. (NOTE: "configuration" in this context is not the same as the options given to the configure script, though the configuration is indeed specified/selected at the time that configure is run.)
  • Sandbox Guide. If you are interested in learning about using sandboxes in BLIS--that is, providing alternative implementations of the gemm operation--please read this document.
Clone this wiki locally