* stack_alloc_size is needed after the implementation call
but it may be overwritten if it's optimized to a register,
because some gemv implementation (ex: dgemv_n.S) do not
restore all register (ex: r10).
* do the same in ger.c for the same reasons even if the bug
has not been observed.
Test requested in issue xianyi/OpenBLAS#484.
Run tests by applying the following change and then make:
diff --git a/Makefile.rule b/Makefile.rule
index bea1fe1..9852ff3 100644
--- a/Makefile.rule
+++ b/Makefile.rule
@@ -140,7 +140,7 @@ NO_AFFINITY = 1
-# UTEST_CHECK = 1
+UTEST_CHECK = 1
ger and gemv call blas_memory_alloc/free which in their turn
call blas_lock. blas_lock create thread contention when matrices
are small and the number of thread is high enough. We avoid
call blas_memory_alloc by replacing it with stack allocation.
This can be enabled with:
make -DMAX_STACK_ALLOC=2048
The given size (in byte) must be high enough to avoid thread contention
and small enough to avoid stack overflow.
Fix#478
On FreeBSD, passing extra options to `which` causes it to report a non-zero status:
```
$ which gfortran48 -m64
/usr/local/bin/gfortran48
$ echo $?
1
```
```
$ which gfortran48
/usr/local/bin/gfortran48
$ echo $?
0
```
If you "make PREFIX=/path/to/OpenBLAS install" ,
The config file will be located in /path/to/OpenBLAS/cmake
Then, you can use "find_package(OpenBLAS)" at CMake.
cmake -DOpenBLAS_DIR=/path/to/OpenBLAS/cmake ..
Optimizations for APM's xgene-1 (aarch64).
1) general system updates to support armv8 better. Make all did not work, one needed to supply TARGET=ARMV8.
2) sgem 4x4 kernel in assembler using SIMD, and configuration changes to use it.
3) strmm 4x4 kernel in C. Since the sgem kernel does 4x4, the trmm kernel must also do 4xN.
Added Dave Nuechterlein to the contributors list.