More doc improvements

* Fold "Users of OpenBLAS", "Publications", "Mailing list", "Donation" pages into "About"
* Remove full license
* Remove outdated TODO and machine list pages
* Shorter titles for CI and distributing pages
* Link to GotoBLAS readme in repo
* Brief description of OpenBLAS in homepage
* Move acknowledgements into About page
* Remove manual TOC in FAQ docs
This commit is contained in:
Matthew Barber 2024-03-12 14:58:32 +00:00
parent 9cfcee131e
commit 27841b8b44
13 changed files with 72 additions and 169 deletions

49
docs/about.md Normal file
View File

@ -0,0 +1,49 @@
## Mailing list
OpenBLAS users: <https://groups.google.com/forum/#!forum/openblas-users>
OpenBLAS developers: <https://groups.google.com/forum/#!forum/openblas-dev>
## Donations
Thank you for the support.
You can read OpenBLAS statement of receipts and disbursement and cash balance on [google doc](https://docs.google.com/spreadsheet/ccc?key=0AghkTjXe2lDndE1UZml0dGpaUzJmZGhvenBZd1F2R1E&usp=sharing).
### Fundraiser
* [2013.8] [Testbed for OpenBLAS project](https://www.bountysource.com/fundraisers/443-testbed-for-openblas-project)
Here is [Backer list](https://github.com/xianyi/OpenBLAS/blob/develop/BACKERS.md).
### For Personal Donation
You can create a bounty for an issue on [bountysource.com](https://www.bountysource.com/trackers/69691-openblas).
### For Hardware Vendors
We welcome the hardware donation, including the latest CPU and boards.
## Acknowledgements
This work is partially supported by
* Research and Development of Compiler System and Toolchain for Domestic CPU, National S&T Major Projects: Core Electronic Devices, High-end General Chips and Fundamental Software (No.2009ZX01036-001-002)
* National High-tech R&D Program of China (Grant No.2012AA010903)
## Users of OpenBLAS
* <a href='http://julialang.org/'>Julia - a high-level, high-performance dynamic programming language for technical computing</a><br />
* Ceemple v1.0.3 (C++ technical computing environment), including OpenBLAS, Qt, Boost, OpenCV and others. The only solution with immediate-recompilation of C++ code. Available from <a href='http://www.ceemple.com'>Ceemple C++ Technical Computing</a>.
* [netlib-java](https://github.com/fommil/netlib-java) and various upstream libraries, allowing OpenBLAS to be used from languages on the Java Virtual Machine.
<!-- TODO: academia users, industry users, hpc centers deployed openblas, etc. -->
## Publications
### 2013
* Wang Qian, Zhang Xianyi, Zhang Yunquan, Qing Yi, **AUGEM: Automatically Generate High Performance Dense Linear Algebra Kernels on x86 CPUs**, In the International Conference for High Performance Computing, Networking, Storage and Analysis (SC'13), Denver CO, November 2013. [[pdf](http://xianyi.github.io/paper/augem_SC13.pdf)]
### 2012
* Zhang Xianyi, Wang Qian, Zhang Yunquan, **Model-driven Level 3 BLAS Performance Optimization on Loongson 3A Processor**, 2012 IEEE 18th International Conference on Parallel and Distributed Systems (ICPADS), 17-19 Dec. 2012.

View File

@ -1,4 +1,4 @@
# CI jobs overview
# CI jobs
| Arch|Target CPU|OS|Build system|XComp to|C Compiler|Fortran Compiler|threading|DYN_ARCH|INT64|Libraries| CI Provider| CPU count|
| ------------|---|---|-----------|-------------|----------|----------------|------|------------|----------|-----------|----------|-------|

View File

@ -1,4 +1,4 @@
# Guidance for redistributing OpenBLAS
# Redistributing OpenBLAS
!!! note
This document contains recommendations only - packagers and other

View File

@ -1,19 +0,0 @@
# Donations
Thank you for the support.
You can read OpenBLAS statement of receipts and disbursement and cash balance on [google doc](https://docs.google.com/spreadsheet/ccc?key=0AghkTjXe2lDndE1UZml0dGpaUzJmZGhvenBZd1F2R1E&usp=sharing).
## Fundraiser
* [2013.8] [Testbed for OpenBLAS project](https://www.bountysource.com/fundraisers/443-testbed-for-openblas-project)
Here is [Backer list](https://github.com/xianyi/OpenBLAS/blob/develop/BACKERS.md).
## For Personal Donation
You can create a bounty for an issue on [bountysource.com](https://www.bountysource.com/trackers/69691-openblas).
## For Hardware Vendors
We welcome the hardware donation, including the latest CPU and boards.

View File

@ -1,15 +0,0 @@
# Users of OpenBLAS
## Softwares
* <a href='http://julialang.org/'>Julia - a high-level, high-performance dynamic programming language for technical computing</a><br />
* Ceemple v1.0.3 (C++ technical computing environment), including OpenBLAS, Qt, Boost, OpenCV and others. The only solution with immediate-recompilation of C++ code. Available from <a href='http://www.ceemple.com'>Ceemple C++ Technical Computing</a>.
* [netlib-java](https://github.com/fommil/netlib-java) and various upstream libraries, allowing OpenBLAS to be used from languages on the Java Virtual Machine.
## Academia Users
## Industry Users
## HPC Centers Deployed OpenBLAS
## Others

View File

@ -1,50 +1,10 @@
# FAQ
---
title: FAQ
---
## General questions
+ **[What is BLAS? Why is it important?](#whatblas)**
+ **[What functions are there and how can I call them from my C code?](#whatsinblas)**
+ **[What is OpenBLAS? Why did you create this project?](#what)**
+ **[What's the difference between OpenBLAS and GotoBLAS?](#gotoblas)**
+ **[Where do parameters GEMM_P, GEMM_Q, GEMM_R come from?](#gemmpqr)**
+ **[How can I report a bug?](#reportbug)**
+ **[How to reference OpenBLAS.](#publication)**
+ **[How can I use OpenBLAS in multi-threaded applications?](#multi-threaded)**
+ **[Does OpenBLAS support sparse matrices and/or vectors ?](#sparse)**
+ **[What support is there for recent PC hardware ? What about GPU ?](#recent_hardware)**
+ **[How about the level 3 BLAS performance on Intel Sandy Bridge?](#sandybridge_perf)**
<!-- Note: Using title metadata instead of markdown header to avoid "FAQ" being present in the generated TOC. -->
## OS and Compiler
+ **[How can I call an OpenBLAS function in Microsoft Visual Studio?](#MSVC)**
+ **[How can I use CBLAS and LAPACKE without C99 complex number support (e.g. in Visual Studio)?](#C99_complex_number)**
+ **[I get a SEGFAULT with multi-threading on Linux. What's wrong?](#Linux_SEGFAULT)**
+ **[When I make the library, there is no such instruction: `xgetbv' error. What's wrong?](#xgetbv)**
+ **[My build fails due to the linker error "multiple definition of `dlamc3_'". What is the problem?](#patch_missing)**
+ **[My build worked fine and passed all tests, but running `make lapack-test` ends with segfaults](#xeigtst)**
+ **[How could I disable OpenBLAS threading affinity on runtime?](#no_affinity)**
+ **[How to solve undefined reference errors when statically linking against libopenblas.a](#static_link)**
+ **[Building OpenBLAS for Haswell or Dynamic Arch on RHEL-6, CentOS-6, Rocks-6.1](#binutils)**
+ **[Building OpenBLAS in QEMU/KVM/XEN](#qemu)**
+ **[Building OpenBLAS on POWER fails with the IBM XL compiler](#ppcxl)**
+ **[Replacing system BLAS in Ubuntu/Debian](#debianlts)**
+ **[I built OpenBLAS for use with some other software, but that software cannot find it](#findblas)**
+ **[I included cblas.h in my program, but the compiler complains about a missing common.h or functions from it](#installincludes)**
+ **[Compiling OpenBLAS with gcc's -fbounds-check actually triggers aborts in programs](#boundscheck)**
+ **[Build fails with lots of errors about undefined ?GEMM_UNROLL_M](#newcpu)**
+ **[CMAKE/OSX: Build fails with 'argument list too long'](#cmakeosx)**
+ **[Likely problems with AVX2 support in Docker Desktop for OSX](#xhyve)**
## Usage
+ **[Program is Terminated. Because you tried to allocate too many memory regions](#allocmorebuffers)**
+ **[How to choose TARGET manually at runtime when compiled with DYNAMIC_ARCH](#choose_target_dynamic)**
+ **[After updating the installed OpenBLAS, a program complains about "undefined symbol gotoblas"](#missgoto)**
+ **[How can I find out at runtime what options the library was built wih ?](#buildoptions)**
+ **[After making OpenBLAS, I find that the static library is multithreaded, but the dynamic one is not ?](#wronglibrary)**
+ **[I want to use OpenBLAS with CUDA in the HPL 2.3 benchmark code but it keeps looking for Intel MKL](#cudahpl)**
+ **[Multithreaded OpenBLAS runs no faster or is even slower than singlethreaded on my ARMV7 board](#cpusoffline)**
+ **[Speed varies wildly between individual runs on a typical ARMV8 smartphone processor](#biglittle)**
+ **[I cannot get OpenBLAS to use more than a small subset of available cores on a big system](#numthreads)**
+ **[Getting "ELF load command address/offset not properly aligned" when loading libopenblas.so](#ELFoffset)**
+ **[Using OpenBLAS with OpenMP](#OpenMP)**
<hr noshade="noshade">
[TOC]
## General questions
@ -97,7 +57,7 @@ Please provide the following information: CPU, OS, compiler, and OpenBLAS compil
### <a name="publication"></a>How to reference OpenBLAS.
You can reference our papers in [this page](publications.md). Alternatively, you can cite the OpenBLAS homepage http://www.openblas.net.
You can reference our papers in [this page](about.md#publications). Alternatively, you can cite the OpenBLAS homepage http://www.openblas.net.
### <a name="multi-threaded"></a>How can I use OpenBLAS in multi-threaded applications?

View File

@ -2,40 +2,10 @@
OpenBLAS is an optimized Basic Linear Algebra Subprograms (BLAS) library based on [GotoBLAS2](https://www.tacc.utexas.edu/research-development/tacc-software/gotoblas2) 1.13 BSD version.
OpenBLAS implements low-level routines for performing linear algebra operations such as vector addition, scalar multiplication, dot products, linear combinations, and matrix multiplicationon. OpenBLAS makes these routines available on multiple popular platforms, covering desktop (Windows, Linux, Mac) and mobile (Android, iOS) operating systems, as well as different architectures (namely x86 and ARM).
The old GotoBLAS documentation can be found [on GitHub](https://github.com/OpenMathLib/OpenBLAS/blob/develop/GotoBLAS_01Readme.txt).
## License
OpenBLAS is licensed under the 3-clause BSD license. Full license text follows:
Copyright (c) 2011-2015, The OpenBLAS Project
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. Neither the name of the OpenBLAS project nor the names of
its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## Acknowledgements
This work is partially supported by
* Research and Development of Compiler System and Toolchain for Domestic CPU, National S&T Major Projects: Core Electronic Devices, High-end General Chips and Fundamental Software (No.2009ZX01036-001-002)
* National High-tech R&D Program of China (Grant No.2012AA010903)
OpenBLAS is licensed under the 3-clause BSD license. The full license can be found [on GitHub](https://github.com/OpenMathLib/OpenBLAS/blob/develop/LICENSE).

View File

@ -83,7 +83,7 @@ $ sudo pacman -S openblas
### Windows
The precompiled binaries available with each release (in <https://github.com/xianyi/OpenBLAS/releases>) are
created with MinGW (as described in Section 2 of the wiki page mentioned above) using an option list of
created with MinGW using an option list of
"NUM_THREADS=64 TARGET=GENERIC DYNAMIC_ARCH=1 DYNAMIC_OLDER=1 CONSISTENT_FPCSR=1" - they should work on
any x86 or x86_64 computer. The zip archive contains the include files, static and dll libraries as well
as configuration files for getting them found via CMAKE or pkgconfig - just create a suitable folder for
@ -397,21 +397,19 @@ On newer versions of Xcode and on arm64, you might need to compile with a newer
### Android
#### Build
##### Prerequisites
#### Prerequisites
In addition to the Android NDK, you will need both Perl and a C compiler on the build host as these are currently
required by the OpenBLAS build environment.
##### Building with android NDK using clang compiler
#### Building with android NDK using clang compiler
Around version 11 Android NDKs stopped supporting gcc, so you would need to use clang to compile OpenBLAS. clang is supported from OpenBLAS 0.2.20 version onwards. See below sections on how to build with clang for ARMV7 and ARMV8 targets. The same basic principles as described below for ARMV8 should also apply to building an x86 or x86_64 version (substitute something like NEHALEM for the target instead of ARMV8 and replace all the aarch64 in the toolchain paths obviously)
"Historic" notes:
Since version 19 the default toolchain is provided as a standalone toolchain, so building one yourself following [building a standalone toolchain](http://developer.android.com/ndk/guides/standalone_toolchain.html) should no longer be necessary.
If you want to use static linking with an old NDK version older than about r17, you need to choose an API level below 23 currently due to NDK bug 272 (https://github.com/android-ndk/ndk/issues/272 , the libc.a lacks a definition of stderr) that will probably be fixed in r17 of the NDK.
##### Build ARMV7 with clang
#### Build ARMV7 with clang
```
## Set path to ndk-bundle
export NDK_BUNDLE_DIR=/path/to/ndk-bundle
@ -434,7 +432,7 @@ AR=${NDK_BUNDLE_DIR}/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
```
otherwise you may get a linker error complaining about a "malformed archive header name at 8" when the native OSX ar command was invoked instead.
##### Build ARMV8 with clang
#### Build ARMV8 with clang
```
## Set path to ndk-bundle
export NDK_BUNDLE_DIR=/path/to/ndk-bundle/
@ -460,7 +458,7 @@ make HOSTCC=gcc CC=/opt/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/b
```
appears to be sufficient on Linux.
##### Alternative script which was tested on OSX with NDK(21.3.6528147)
#### Alternative script which was tested on OSX with NDK(21.3.6528147)
This script will build openblas for 3 architecture (ARMV7,ARMV8,X86) and put them with `sudo make install` to `/opt/OpenBLAS/lib`
```
export NDK=YOUR_PATH_TO_SDK/Android/sdk/ndk/21.3.6528147
@ -515,7 +513,7 @@ Also you can find full list of target architectures in [TargetsList.txt](https:/
***
anything below this line should be irrelevant nowadays unless you need to perform software archeology
***
##### Building OpenBLAS with very old gcc-based versions of the NDK, without Fortran
#### Building OpenBLAS with very old gcc-based versions of the NDK, without Fortran
The prebuilt Android NDK toolchains do not include Fortran, hence parts like LAPACK cannot be built. You can still build OpenBLAS without it. For instructions on how to build OpenBLAS with Fortran, see the [next section](#building-openblas-with-fortran).
@ -554,7 +552,7 @@ here that you specified for building, otherwise errors may occur as it tries to
make PREFIX=/path/to/install-dir TARGET=... install
```
##### Building OpenBLAS with Fortran
#### Building OpenBLAS with Fortran
Instructions on how to build the GNU toolchains with Fortran can be found [here](https://github.com/buffer51/android-gfortran). The [Releases section](https://github.com/buffer51/android-gfortran/releases) provides prebuilt versions, use the standalone one.
@ -571,7 +569,7 @@ make TARGET=ARMV8 BINARY=64 HOSTCC=gcc CC=aarch64-linux-android-gcc FC=aarch64-l
As mentioned above you can leave off the `libs` argument here when building 0.2.20 and later, and you may want to add ARM_SOFTFP_ABI=1 when building for ARMV7.
##### Linking OpenBLAS (0.2.19 and earlier) for ARMV7
#### Linking OpenBLAS (0.2.19 and earlier) for ARMV7
If you are using `ndk-build`, you need to set the ABI to hard floating points in your Application.mk:
```

View File

@ -1,9 +0,0 @@
We deployed the following machine to support developing OpenBLAS. The interested developer can apply the remote access by sending the mail to [OpenBLAS-dev mailing list](https://groups.google.com/forum/#!forum/openblas-dev).
* 2-way Intel Xeon E5-2680 (2.7GHz, Intel Sandy Bridge), 32GB memory, 1TB hard disk, Ubuntu 14.04 64-bit.
* 1-way Intel Core i7-4770 (3.4GHz, Intel Haswell), 8GB memory, 512GB hard disk, Ubuntu 14.04 64-bit.
* 1-way AMD FX-8320 (3.5GHz, AMD Piledriver), 8GB memory, 512GB hard disk, Ubuntu 14.04 64-bit.
* [Odroid-U2 board](http://www.hardkernel.com/main/products/prdt_info.php?g_code=G135341370451). 1-way Exynos4412 Prime 1.7Ghz ARM Cortex-A9 Quad Cores, 2GB memory, 16GB SD card, Ubuntu 14.04 32-bit.
* AMD A10-7850K APU (Kaveri, Steamroller+GCN GPU), 8GB memory, 1TB hard disk, Ubuntu 14.04.1 64-bit
* NVIDIA TK1 (ARM Cortex-A15), ARM 32-bit, Ubuntu
* NVIDIA TX1 (ARM Cortex-A57), AArch64, Ubuntu

View File

@ -1,3 +0,0 @@
OpenBLAS users: https://groups.google.com/forum/#!forum/openblas-users
OpenBLAS developers: https://groups.google.com/forum/#!forum/openblas-dev

View File

@ -1,7 +0,0 @@
### 2013
* Wang Qian, Zhang Xianyi, Zhang Yunquan, Qing Yi, **AUGEM: Automatically Generate High Performance Dense Linear Algebra Kernels on x86 CPUs**, In the International Conference for High Performance Computing, Networking, Storage and Analysis (SC'13), Denver CO, November 2013. [[pdf](http://xianyi.github.io/paper/augem_SC13.pdf)]
### 2012
* Zhang Xianyi, Wang Qian, Zhang Yunquan, **Model-driven Level 3 BLAS Performance Optimization on Loongson 3A Processor**, 2012 IEEE 18th International Conference on Parallel and Distributed Systems (ICPADS), 17-19 Dec. 2012.

View File

@ -1,16 +0,0 @@
# TODO
Werner found a lot of bugs about lapack testing. In 0.2.9 version, we used a work-around,e.g. fallback to the old kernel, replacing the optimized kernel with reference kernel. We must fix them in future release.
* <s>Nehalem dgemm kernel. Fallback to core2 kernel.</s>
* <s>Sandy bridge sgemm kernel. Fallback to Nehalem kernels.</s>
* <s>Sandy bridge cgemm kernel. Fallback to Nehalem kernels.</s>
* sbmv, zsbmv, smp bug (interface/sbmv.c zsbmv.c). Now, it is only sequential.
* zhbmv, smp bug.
* <s>scal, zscal x86/x86_64 kernels. Fallback to C implementation.</s>
* <s>potri, zpotri. Fallback to LAPACK reference implementation.</s>
* <s>lauu2, zlauu2. Fallback to LAPACK reference implementation.</s>
* <s>trtri, ztrtri. Fallback to LAPACK reference implementation.</s>
* <s>lauum, zlauum. Fallback to LAPACK reference implementation.</s>
* <s>trti2, ztrti2. Fallback to LAPACK reference implementation.</s>
* Disable SMP in ger.c and zger.c

View File

@ -20,10 +20,5 @@ nav:
- build_system.md
- distributing.md
- ci.md
- machine_list.md
- todo.md
- ecosystem.md
- publications.md
- mailing_list.md
- donate.md
- about.md
- faq.md