You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> All problems in computer science can be solved by another level of indirection
4
8
5
-
Using PLT trampolines to provide a BLAS and LAPACK demuxing library.
9
+
Using [PLT trampolines](https://en.wikipedia.org/wiki/Trampoline_(computing)) to provide a BLAS and LAPACK demuxing library.
6
10
7
11
## Basic usage
8
12
@@ -23,7 +27,7 @@ In particular, we export both a 32-bit (LP64) and 64-bit (ILP64) interface, allo
23
27
Applications that wish to use the 64-bit interface must append `_64` to their function calls, e.g. instead of calling `dgemm()` they must call `dgemm_64()`.
24
28
The BLAS/LAPACK symbol list we re-export comes from the `gensymbol` script contained within `OpenBLAS`.
25
29
See [`ext/gensymbol`](ext/gensymbol) for more.
26
-
We note that we have an experimental `Clang.jl`-based symbol extractor that extracts only those symbols that are defined within the headers shipped with OpenBLAS, however as there are hundreds of symbols that `gensymbol` knows about (and are indeed exported from the shared library `libopenblas.so`) that are not included in the public C headers, we take the conservative approach and export the `gensymbol`-sourced symbols.
30
+
We note that we have an experimental [`Clang.jl`](https://github.com/JuliaInterop/Clang.jl)-based symbol extractor that extracts only those symbols that are defined within the headers shipped with OpenBLAS, however as there are hundreds of symbols that `gensymbol` knows about (and are indeed exported from the shared library `libopenblas.so`) that are not included in the public C headers, we take the conservative approach and export the `gensymbol`-sourced symbols.
27
31
28
32
Because we export both the 32-bit (LP64) and 64-bit (ILP64) interfaces, if clients need header files defining the various BLAS/LAPACK functions, they must include headers defining the appropriate ABI.
29
33
We provide headers broken down by interface (`LP64` vs. `ILP64`) as well as target (e.g. `x86_64-linux-gnu`), so to properly compile your code with headers provided by `libblastrampoline` you must add the appropriate `-I${prefix}/include/${interface}/${target}` flags.
@@ -41,7 +45,7 @@ This support is only available on the `x86_64` and `i686` architectures, however
41
45
See the [public header file](src/libblastrampoline.h) for the most up-to-date documentation on the `libblastrampoline` API.
42
46
43
47
**Note**: all `lbt_*` functions should be considered thread-unsafe.
44
-
Do not attempt to load two BLAS libraries one two different threads at the same time.
48
+
Do not attempt to load two BLAS libraries on two different threads at the same time.
45
49
46
50
### Limitations
47
51
@@ -56,6 +60,8 @@ You can always tell if your system is limited in this fashion by calling `lbt_ge
56
60
57
61
v3.0.0 - Added `active_forwards` field to `lbt_libinfo_t` and `exported_symbols` to `lbt_config_t`.
58
62
63
+
v2.2.0 - Removed useless `exit(1)` in `src/dl_utils.c`.
64
+
59
65
v2.1.0 - Added threading getter/setter API, direct setting API and default function API.
60
66
61
67
v2.0.0 - Added f2c autodetection for Accelerate, changed public API to `lbt_forward()` from `load_blas_funcs()`.
This uses [the `gensymbol` script from OpenBLAS](https://github.com/xianyi/OpenBLAS/blob/develop/exports/gensymbol) to generate a list of BLAS/LAPACK symbols from first principles.
4
-
To use this, run `./generate_func_list.sh` and it will automatically populate [the `jl_exported_funcs.inc` file in `src/`](../../src/jl_exported_funcs.inc).
4
+
To use this, run `./generate_func_list.sh` and it will automatically populate [the `src/exported_funcs.inc` file](../../src/exported_funcs.inc).
0 commit comments