| OpenBLAS Readme |
| |
| 1.Introduction |
| OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. OpenBLAS is an open source project supported by Lab of Parallel Software and Computational Science, ISCAS.(http://www.rdcps.ac.cn) |
| Please read the documents on OpenBLAS wiki pages(http://github.com/xianyi/OpenBLAS/wiki). |
| |
| 2.Intallation |
| Download from project homepage. http://xianyi.github.com/OpenBLAS/ |
| Or, |
| check out codes from git://github.com/xianyi/OpenBLAS.git |
| 1)Normal compile |
| (a) type "make" to detect the CPU automatically. |
| or |
| (b) type "make TARGET=xxx" to set target CPU, e.g. "make TARGET=NEHALEM". The full target list is in file TargetList.txt. |
| |
| 2)Cross compile |
| Please set CC and FC with the cross toolchains. Then, set HOSTCC with your host C compiler. At last, set TARGET explicitly. |
| |
| examples: |
| On X86 box, compile this library for loongson3a CPU. |
| make BINARY=64 CC=mips64el-unknown-linux-gnu-gcc FC=mips64el-unknown-linux-gnu-gfortran HOSTCC=gcc TARGET=LOONGSON3A |
| |
| 3)Debug version |
| make DEBUG=1 |
| |
| 4)Intall to the directory (Optional) |
| e.g. |
| make install PREFIX=your_installation_directory |
| The default directory is /opt/OpenBLAS |
| |
| 3.Support CPU & OS |
| Please read GotoBLAS_01Readme.txt |
| |
| Additional support CPU: |
| x86_64: |
| Intel Xeon 56xx (Westmere) //Used GotoBLAS2 Nehalem codes. |
| MIPS64: |
| ICT Loongson 3A //Level 3 BLAS subroutines are optimized. |
| |
| 4.Usages |
| Link with libopenblas.a or -lopenblas for shared library. |
| |
| 4.1 Set the number of threads with environment variables. for example, |
| export OPENBLAS_NUM_THREADS=4 |
| or |
| export GOTO_NUM_THREADS=4 |
| or |
| export OMP_NUM_THREADS=4 |
| |
| The priorities are OPENBLAS_NUM_THREADS > GOTO_NUM_THREADS > OMP_NUM_THREADS. |
| |
| If you compile this lib with USE_OPENMP=1, you should set OMP_NUM_THREADS environment variable. OpenBLAS ignores OPENBLAS_NUM_THREADS and GOTO_NUM_THREADS with USE_OPENMP=1. |
| |
| 4.2 Set the number of threads with calling functions. for example, |
| void goto_set_num_threads(int num_threads); |
| or |
| void openblas_set_num_threads(int num_threads); |
| |
| If you compile this lib with USE_OPENMP=1, you should use the above functions, too. |
| |
| 5.Report Bugs |
| Please add a issue in https://github.com/xianyi/OpenBLAS/issues |
| |
| 6.To-Do List: |
| Optimization on ICT Loongson 3A CPU |
| |
| 7.Contact |
| OpenBLAS users mailing list: http://list.rdcps.ac.cn/mailman/listinfo/openblas |
| |
| 8.ChangeLog |
| Please see Changelog.txt to obtain the differences between GotoBLAS2 1.13 BSD version. |
| |
| 9.Known Issues |
| * The number of CPUs/Cores should less than or equal to 8*sizeof(unsigned long). On 64 bits, the limit |
| is 64. On 32 bits, it is 32. |
| * On Loongson 3A. make test would be failed because of pthread_create error. The error code is EAGAIN. However, it will be OK when you run the same testcase on shell. I don't think this is a bug in OpenBLAS. |
| |
| 10. Specification of Git Branches |
| We used the git branching model in this article (http://nvie.com/posts/a-successful-git-branching-model/). |
| Now, there are 4 branches in github.com. |
| * The master branch. This a main branch to reflect a production-ready state. |
| * The develop branch. This a main branch to reflect a state with the latest delivered development changes for the next release. |
| * The loongson3a branch. This is a feature branch. We develop Loongson3A codes on this branch. We will merge this feature to develop branch in future. |
| * The gh-pages branch. This is for web pages |