=========
CudaTools
=========
This is the documentation for CudaTools, a header-only library and framework
for the development of CPU-CUDA compatible applications. Using CudaTools enables
the creation of a single unified code that has both CPU and CUDA compilation targets with minimal need to
introduce ``#ifdef`` statements when code is essentially identical between the targets.

For information on the library itself and its usage, view `documentation <https://acem.ece.illinois.edu/docs/CudaTools>`__. The small code snippets and samples
seen in the documentation are in the folder ``samples``.

Dependencies
============
- Eigen

In the future, we will make this dependency optional, but still provide support
for it. As of now, it is necessary.

Building the Documentation
==========================
The documentation is built with `Doxygen <https://doxygen.nl/>`__ and `Sphinx <https://www.sphinx-doc.org/en>`__.
So, first make sure you have Doxygen installed on your system, and make sure it is added
to your system path. Then, you will have to create a Python virtual environment
in the repository folder

.. code-block:: bash

    $ python3 -m venv .venv

After installing the required Python packages

.. code-block:: bash

    $ pip install -r requirements.txt

you can now run the script

.. code-block:: bash

    $ ./build_docs