Install from source
Caution
Users who have issues about installing k2 from source are mostly installing
PyTorch with conda install
.
We suggest that you install PyTorch
using pip install
.
Hint
It supports Linux (CPU + CUDA), macOS (CPU), and Windows (CPU + CUDA).
Hint
You can pass the option -DK2_WITH_CUDA=OFF
to cmake
to build
a CPU only version of k2. In that case, you have to install a CPU version
of PyTorch; otherwise, you will get a CMake configuration error, saying
that cuDNN cannot be found.
Before compiling k2, some preparation work has to be done:
Have a compiler supporting at least C++14, e.g., GCC >= 7.0, Clang >= 3.4.
Install CMake. CMake 3.11.0 and 3.18.0 are known to work.
Install Python3. Please pass
--enabled-shared
to./configure
if you install Python from source.Install PyTorch.
Install CUDA toolkit and cuDNN. Please refer to CUDA and cuDNN.
Hint
You can use pip install cmake
to install the latest version of CMake.
Caution
cudatoolkit installed by conda install
cannot be used to compile k2
.
Please follow CUDA and cuDNN to install cudatoolkit and cuDNN.
After setting up the environment, we are ready to build k2:
git clone https://github.com/k2-fsa/k2.git
cd k2
export K2_MAKE_ARGS="-j6"
python3 setup.py install
That is all you need to run.
Hint
We use export K2_MAKE_ARGS="-j6"
to pass -j6
to make
to reduce compilation time.
If you have many GPUs and enough RAM, you can choose a larger value.
Caution
If you plan to run k2 on a different machine than the one you used to build k2 and the two machines have different types of GPUs, please use the following commands to install k2.
git clone https://github.com/k2-fsa/k2.git cd k2 export K2_CMAKE_ARGS="-DK2_BUILD_FOR_ALL_ARCHS=ON" python3 setup.py install
Otherwise, you may get some error like below when running k2:
[F] /xxx/k2/k2-latest/k2/csrc/eval.h:147:void k2::EvalDevice(cudaStream_t, int32_t, LambdaT&) [with LambdaT = __nv_dl_wrapper_t<__nv_dl_tag<k2::Array1<int> (*)(std::shared_ptr<k2::Context>, int, int, int), k2::Range<int>, 1>, int*, int, int>; cudaStream_t = CUstream_st*; int32_t = int] Check failed: e == cudaSuccess (98 vs. 0) Error: invalid device function.
To test that k2 is installed successfully, you can run:
$ python3
Python 3.8.6 (default, Dec 2 2020, 15:56:31)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import k2
>>> s = '''
... 0 1 -1 0.1
... 1
... '''
>>> fsa = k2.Fsa.from_str(s)
>>> print(fsa)
k2.Fsa: 0 1 -1 0.1
1
properties_str = "Valid|Nonempty|TopSorted|TopSortedAndAcyclic|ArcSorted|ArcSortedAndDeterministic|EpsilonFree|MaybeAccessible|MaybeCoaccessible".
To uninstall k2, run:
pip uninstall k2
Read more if you want to run the tests.
sudo apt-get install graphviz
git clone https://github.com/k2-fsa/k2.git
cd k2
pip3 install -r ./requirements.txt
mkdir build_release
cd build_release
cmake -DCMAKE_BUILD_TYPE=Release ..
# If you installed cudatoolkit using conda install -y -c nvidia cudatoolkit=X cudnn=Y,
# source the conda environemt and change the cmake command to:
# cmake -DCUDNN_LIBRARY_PATH=$(find $CONDA_PREFIX -name libcudnn.so) -DCUDNN_INCLUDE_PATH=$CONDA_PREFIX/include/ -DCMAKE_BUILD_TYPE=Release ..
make -j
make test
To run tests in parallel:
make -j
ctest --output-on-failure --parallel <JOBNUM>
# e.g., ctest --output-on-failure --parallel 5