
- [x] add `concretize.lp`, `spack.yaml`, etc. to licensed files - [x] update all licensed files to say 2013-2021 using `spack license update-copyright-year` - [x] appease mypy with some additions to package.py that needed for oneapi.py
44 lines
1.4 KiB
ReStructuredText
44 lines
1.4 KiB
ReStructuredText
.. Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
|
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
.. _cudapackage:
|
|
|
|
-----------
|
|
CudaPackage
|
|
-----------
|
|
|
|
Different from other packages, ``CudaPackage`` does not represent a build
|
|
system. Instead its goal is to simplify and unify usage of ``CUDA`` in other
|
|
packages.
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
Provided variants and dependencies
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
``CudaPackage`` provides ``cuda`` variant (default to ``off``) to enable/disable
|
|
``CUDA``, and ``cuda_arch`` variant to optionally specify the architecture.
|
|
It also declares dependencies on the ``CUDA`` package ``depends_on('cuda@...')``
|
|
based on the architecture as well as specifies conflicts for certain compiler versions.
|
|
|
|
^^^^^
|
|
Usage
|
|
^^^^^
|
|
|
|
In order to use it, just add another base class to your package, for example:
|
|
|
|
.. code-block:: python
|
|
|
|
class MyPackage(CMakePackage, CudaPackage):
|
|
...
|
|
def cmake_args(self):
|
|
spec = self.spec
|
|
if '+cuda' in spec:
|
|
options.append('-DWITH_CUDA=ON')
|
|
cuda_arch = spec.variants['cuda_arch'].value
|
|
if cuda_arch != 'none':
|
|
options.append('-DCUDA_FLAGS=-arch=sm_{0}'.format(cuda_arch[0]))
|
|
else:
|
|
options.append('-DWITH_CUDA=OFF')
|