Warning, /HeterogeneousTest/CUDAOpaque/README.md is written in an unsupported language. File is not indexed.
0001 # Introduction
0002
0003 The packages `HeterogeneousTest/CUDADevice`, `HeterogeneousTest/CUDAKernel`,
0004 `HeterogeneousTest/CUDAWrapper` and `HeterogeneousTest/CUDAOpaque` implement a set of libraries,
0005 plugins and tests to exercise the build rules for CUDA.
0006 In particular, these tests show what is supported and what are the limitations implementing
0007 CUDA-based libraries, and using them from multiple plugins.
0008
0009
0010 # `HeterogeneousTest/CUDAOpaque`
0011
0012 The package `HeterogeneousTest/CUDAOpaque` implements a non-CUDA aware library, with functions that
0013 call the wrappers defined in the `HeterogeneousTest/CUDAWrapper` library:
0014 ```c++
0015 namespace cms::cudatest {
0016
0017 void opaque_add_vectors_f(...);
0018 void opaque_add_vectors_d(...);
0019
0020 } // namespace cms::cudatest
0021 ```
0022
0023 The `plugins` directory implements the `CUDATestOpqaueAdditionModule` `EDAnalyzer` that calls the
0024 function defined in this library. This plugin shows how the function can be used directly from a
0025 host-only, non-CUDA aware plugin.
0026
0027 The `test` directory implements the `testCudaDeviceAdditionOpqaue` test binary that calls the
0028 function defined in this library, and shows how they can be used directly from a host-only, non-CUDA
0029 aware application.
0030 It also contains the `testCUDATestOpqaueAdditionModule.py` python configuration to exercise the
0031 `CUDATestOpqaueAdditionModule` module.
0032
0033
0034 # Other packages
0035
0036 For various ways in which this library and plugin can be tested, see also the other
0037 `HeterogeneousTest/CUDA...` packages:
0038 - [`HeterogeneousTest/CUDADevice/README.md`](../../HeterogeneousTest/CUDADevice/README.md)
0039 - [`HeterogeneousTest/CUDAKernel/README.md`](../../HeterogeneousTest/CUDAKernel/README.md)
0040 - [`HeterogeneousTest/CUDAWrapper/README.md`](../../HeterogeneousTest/CUDAWrapper/README.md)
0041
0042
0043 # Combining plugins
0044
0045 `HeterogeneousTest/CUDAOpaque/test` contains also the `testCUDATestAdditionModules.py` python
0046 configuration that tries to exercise all four plugins in a single application.
0047 Unfortunately, the CUDA kernels used in the `CUDATestDeviceAdditionModule` plugin and those used in
0048 the `HeterogeneousTest/CUDAKernel` library run into some kind of conflict, leading to the error
0049 ```
0050 HeterogeneousTest/CUDAKernel/plugins/CUDATestKernelAdditionAlgo.cu, line 17:
0051 cudaCheck(cudaGetLastError());
0052 cudaErrorInvalidDeviceFunction: invalid device function
0053 ```
0054 Using together the other three plugins does work correctly.