Skip to content

Commit 7c6b96e

Browse files
authored
Merge pull request #96 from rust-math/update-readme
Update README
2 parents 1b547be + f71e657 commit 7c6b96e

File tree

1 file changed

+34
-42
lines changed

1 file changed

+34
-42
lines changed

README.md

Lines changed: 34 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,40 @@
11
# intel-mkl-src
22

3-
|crate | crate.io | description |
4-
|:-------------|:---------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------|
5-
|intel-mkl-src | [![Crate](http://meritbadge.herokuapp.com/intel-mkl-src)](https://crates.io/crates/intel-mkl-src) | Source crate for Intel-MKL |
6-
|intel-mkl-sys | [![Crate](http://meritbadge.herokuapp.com/intel-mkl-sys)](https://crates.io/crates/intel-mkl-sys) | FFI for Intel-MKL [vector math][VM], and [statistical functions][VSL] |
7-
|intel-mkl-tool| [![Crate](http://meritbadge.herokuapp.com/intel-mkl-tool)](https://crates.io/crates/intel-mkl-tool)| CLI utility for redistributing Intel-MKL |
8-
9-
Redistribution of Intel MKL as a crate. Tested on Linux, macOS, and Windows (since 0.4.0)
3+
|crate | crate.io | docs.rs | description |
4+
|:-------------|:-------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------|:---------------------------------------------------------------|
5+
|intel-mkl-src | [![crate](https://img.shields.io/crates/v/intel-mkl-src.svg)](https://crates.io/crates/intel-mkl-src) | [![docs.rs](https://docs.rs/intel-mkl-src/badge.svg)](https://docs.rs/intel-mkl-src) | Source crate for Intel-MKL |
6+
|intel-mkl-sys | [![Crate](https://img.shields.io/crates/v/intel-mkl-sys.svg)](https://crates.io/crates/intel-mkl-sys) | [![docs.rs](https://docs.rs/intel-mkl-sys/badge.svg)](https://docs.rs/intel-mkl-sys) |FFI for Intel-MKL [vector math][VM], and [statistical functions][VSL] |
7+
|intel-mkl-tool| [![Crate](https://img.shields.io/crates/v/intel-mkl-tool.svg)](https://crates.io/crates/intel-mkl-tool)| [![docs.rs](https://docs.rs/intel-mkl-tool/badge.svg)](https://docs.rs/intel-mkl-tool)|Seek Intel-MKL libraries from filesystem |
108

119
[VM]: https://software.intel.com/en-us/mkl-developer-reference-c-vector-mathematical-functions
1210
[VSL]: https://software.intel.com/en-us/mkl-developer-reference-c-statistical-functions
1311

1412
## Supported features
1513

16-
- `mkl-*-*-*` features specify which MKL to be linked
17-
- `static` means MKL will be linked statically, and `dynamic` means MKL will be linked dynamically
18-
- `lp64` means 32-bit integer interface, `ilp64` means 64-bit integer interface
19-
- `iomp` means MKL uses Intel OpenMP, `seq` means sequential execution, e.g. no parallelization
20-
- OpenMP is not supported for Windows currently [#46](https://github.com/rust-math/intel-mkl-src/issues/46)
21-
- default is `mkl-static-ilp64-seq`, and you must choose one of them.
22-
- macOS is not supported [#42](https://github.com/rust-math/intel-mkl-src/issues/42)
23-
24-
| feature name | Linux | macOS | Windows |
25-
|:-----------------------|:------------------:|:------------------:|:------------------:|
26-
| mkl-static-lp64-iomp | :heavy_check_mark: | - | - |
27-
| mkl-static-lp64-seq | :heavy_check_mark: | - | :heavy_check_mark: |
28-
| mkl-static-ilp64-iomp | :heavy_check_mark: | - | - |
29-
| mkl-static-ilp64-seq | :heavy_check_mark: | - | :heavy_check_mark: |
30-
| mkl-dynamic-lp64-iomp | :heavy_check_mark: | :heavy_check_mark: | - |
31-
| mkl-dynamic-lp64-seq | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
32-
| mkl-dynamic-ilp64-iomp | :heavy_check_mark: | :heavy_check_mark: | - |
33-
| mkl-dynamic-ilp64-seq | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
34-
35-
- `download` feature enables downloading MKL archive managed by this project from AWS S3 (default ON)
14+
`mkl-*-*-*` features specify which MKL to be linked as following.
15+
If any feature is set, default to `mkl-static-ilp64-iomp`.
16+
17+
### Link type (`static` or `dynamic`)
18+
`dynamic` means MKL is linked dynamically, i.e. the executable does not contains MKL libraries
19+
and will seek them from filesystem while execution.
20+
This is better choice when the MKL libraries are managed by the system package manager e.g. `apt`.
21+
22+
`static` means MKL is linked statically, i.e. the MKL binaries are embedded in the executable file.
23+
This is better choice when creating portable executable, or system-managed MKL library does not exist.
24+
25+
### Data model (`lp64` or `ilp64`)
26+
27+
This specify the data model:
28+
29+
- `ilp64` means `int` (i), `long` (l), and pointers (p) are 64-bit.
30+
- `lp64` means `long` (l) and pointers (p) are 64-bit, `int` is 32-bit.
31+
32+
### Thread management (`iomp` or `seq`)
33+
34+
- `iomp` means MKL uses Intel OpenMP runtime
35+
- `seq` means sequential (single thread) execution
36+
37+
Using GNU OpenMP runtime (`libgomp`) is not supported in this project.
3638

3739
## Usage
3840

@@ -46,25 +48,15 @@ fftw-sys = { version = "0.4", features = ["intel-mkl"] }
4648

4749
## How to find system MKL libraries
4850

49-
This crate seeks system MKL libraries, e.g. installed by [apt], [yum], or official manual installer, as following manner:
51+
`intel-mkl-tool` crate seeks system MKL libraries, e.g. installed by various installer as following manner:
5052

51-
- Check `${OUT_DIR}` where previous build has downloaded
52-
- Seek using [pkg-config] crate
53-
- `${PKG_CONFIG_PATH}` has to be set correctly. It may not be set by default in usual install.
54-
- You can confirm it by checking the following command returns error.
55-
```
56-
pkg-config --libs mkl-dynamic-lp64-iomp
57-
```
58-
- Seek a directory set by `${MKLROOT}` environment variable
53+
- Seek using `pkg-config` command
54+
- Seek `${MKLROOT}` directory
5955
- Seek default installation path
6056
- `/opt/intel/mkl` for Linux
61-
- `C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows` for Windows
62-
63-
If not found any MKL library and `download` feature is ON, this crate will download archive from AWS S3 `rust-intel-mkl` bucket.
57+
- `C:/Program Files (x86)/IntelSWTools/` and `C:/Program Files (x86)/Intel/oneAPI` for Windows
6458

65-
[apt]: https://software.intel.com/content/www/us/en/develop/articles/installing-intel-free-libs-and-python-apt-repo.html
66-
[yum]: https://software.intel.com/content/www/us/en/develop/articles/installing-intel-free-libs-and-python-yum-repo.html
67-
[pkg-config]: https://github.com/rust-lang/pkg-config-rs
59+
If `intel-mkl-tool` cannot find system MKL, `intel-mkl-src` try to download MKL binaries from OCI Registry.
6860

6961
## License
7062
MKL is distributed under the Intel Simplified Software License for Intel(R) Math Kernel Library, See [License.txt](License.txt).

0 commit comments

Comments
 (0)