Back to home page

Project CMSSW displayed by LXR

 
 

    


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.