| # C++ API Tests |
| |
| In this folder live the tests for PyTorch's C++ API (formerly known as |
| autogradpp). They use the [Catch2](https://github.com/catchorg/Catch2) test |
| framework. |
| |
| ## CUDA Tests |
| |
| The way we handle CUDA tests is by separating them into a separate `TEST_CASE` |
| (e.g. we have `optim` and `optim_cuda` test cases in `optim.cpp`), and giving |
| them the `[cuda]` tag. Then, inside `main.cpp` we detect at runtime whether |
| CUDA is available. If not, we disable these CUDA tests by appending `~[cuda]` |
| to the test specifications. The `~` disables the tag. |
| |
| One annoying aspect is that Catch only allows filtering on test cases and not |
| sections. Ideally, one could have a section like `LSTM` inside the `RNN` test |
| case, and give this section a `[cuda]` tag to only run it when CUDA is |
| available. Instead, we have to create a whole separate `RNN_cuda` test case and |
| put all these CUDA sections in there. |
| |
| ## Integration Tests |
| |
| Integration tests use the MNIST dataset. You must download it by running the |
| following command from the PyTorch root folder: |
| |
| ```shell |
| $ python tools/download_mnist.py -d test/cpp/api/mnist |
| ``` |