Field G. Van Zee 5a36e5bf2f Embed func_t microkernel objects in control trees.
Details:
- Modified all control tree node definitions to include a new field of
  type func_t*, which is similar to a blksz_t except that it contains
  one function pointer (each typed simply as void*) for each datatype.
  We use the func_t* to embed pointers to the micro-kernels to use for
  the leaf-level nodes of each control tree. This change is a natural
  extension of control trees and will allow more flexibility in the
  future.
- Modified all macro-kernel wrappers to obtain the micro-kernel pointers
  from the incomming (previously ignored) control tree node and then pass
  the queried pointer into the datatype-specific macro-kernel code, which
  then casts the pointer to the appropriate type (new typedefs residing
  in bli_kernel_type_defs.h) and then uses the pointer to call the micro-
  kernel. Thus, the micro-kernel function is no longer "hard-coded" (that
  is, determined when the datatype-specific macro-kernel functions are
  instantiated by the C preprocessor).
- Added macros to bli_kernel_macro_defs.h that build datatype-specific
  base names if they do not exist already, and then uses those to build
  datatype-specific micro-kernel function names. This will allow
  developers extra flexibility if they wanted to, for example, name each
  of their datatype-specific micro-kernels differently (e.g. double
  real might be named bli_dgemm_opt_4x4() while double complex might be
  named bli_zgemm_opt_2x2()).
- Inserted appropriate code into _cntl_init() functions that allocates
  and initializes a func_t object for the corresponding micro-kernels.
  The gemm ukernel func_t object is created once, in bli_gemm_cntl_init(),
  and then reused via extern wherever possible.
2014-01-27 11:13:00 -06:00
2013-11-11 10:15:40 -06:00
2012-12-17 12:35:54 -06:00

BLIS framework
README
---

Thank you for deciding to try out the BLIS framework!

BLIS is a portable framework for instantiating BLAS-like libraries. The
framework was designed to isolate essential kernels of computation that,
when optimized, immediately enable optimized implementations of most of
its commonly used and computationally intensive operations.

BLIS has many features. For more detailed information about the project,
please check the BLIS homepage:

  http://code.google.com/p/blis/

You can keep in touch with developers and other users of the project by
joining one or more of the following mailing lists:

  o blis-announce - http://groups.google.com/group/blis-announce 
    Used only for announcements and other important messages regarding
    BLIS.

  o blis-discuss - http://groups.google.com/group/blis-discuss
    Please join and post to this mailing list if you have general questions
    or feedback regarding BLIS. Application developers (end users) should
    probably post here.

  o blis-devel - http://groups.google.com/group/blis-devel
    Please join and post to this mailing list if you are a BLIS developer
    (i.e., you are trying to use BLIS to create libraries, you want to
    write kernels for the framework, or you are trying to modify or extend
    the framework itself).

Also, please read the LICENSE file for information on copying and
distributing this software.

For a step-by-step guide on configuring, compiling, and installing BLIS,
please read the INSTALL file. Also, please check the BLIS website's wiki
page for other useful how-to guides.

Thanks again for your interest in BLIS!

Regards,

Field G. Van Zee
field@cs.utexas.edu

Description
BLAS-like Library Instantiation Software Framework
Readme BSD-3-Clause 71 MiB
Languages
C 86.2%
C++ 9.7%
Fortran 1.9%
Makefile 0.8%
MATLAB 0.4%
Other 0.9%