Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-19 04:04:42

0001 #ifndef HeterogeneousCore_AlpakaTest_plugins_alpaka_TestAlgo_h
0002 #define HeterogeneousCore_AlpakaTest_plugins_alpaka_TestAlgo_h
0003 
0004 #include "DataFormats/PortableTestObjects/interface/alpaka/TestDeviceCollection.h"
0005 #include "DataFormats/PortableTestObjects/interface/alpaka/TestDeviceObject.h"
0006 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0007 #include "HeterogeneousCore/AlpakaTest/interface/alpaka/AlpakaESTestData.h"
0008 
0009 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0010 
0011   class TestAlgo {
0012   public:
0013     void fill(Queue& queue, portabletest::TestDeviceCollection& collection, double xvalue = 0.) const;
0014     void fillObject(
0015         Queue& queue, portabletest::TestDeviceObject& object, double x, double y, double z, int32_t id) const;
0016 
0017     portabletest::TestDeviceCollection update(Queue& queue,
0018                                               portabletest::TestDeviceCollection const& input,
0019                                               AlpakaESTestDataEDevice const& esData) const;
0020 
0021     portabletest::TestDeviceMultiCollection2 updateMulti2(Queue& queue,
0022                                                           portabletest::TestDeviceMultiCollection2 const& input,
0023                                                           AlpakaESTestDataEDevice const& esData) const;
0024     portabletest::TestDeviceMultiCollection3 updateMulti3(Queue& queue,
0025                                                           portabletest::TestDeviceMultiCollection3 const& input,
0026                                                           AlpakaESTestDataEDevice const& esData) const;
0027 
0028     struct UpdateInfo {
0029       int x, y, z;
0030     };
0031     portabletest::TestDeviceCollection update(Queue& queue,
0032                                               portabletest::TestDeviceCollection const& input,
0033                                               UpdateInfo const* d_updateInfo) const;
0034     portabletest::TestDeviceMultiCollection2 updateMulti2(Queue& queue,
0035                                                           portabletest::TestDeviceMultiCollection2 const& input,
0036                                                           UpdateInfo const* d_updateInfo) const;
0037     portabletest::TestDeviceMultiCollection3 updateMulti3(Queue& queue,
0038                                                           portabletest::TestDeviceMultiCollection3 const& input,
0039                                                           UpdateInfo const* d_updateInfo) const;
0040 
0041     void fillMulti2(Queue& queue, portabletest::TestDeviceMultiCollection2& collection, double xvalue = 0.) const;
0042     void fillMulti3(Queue& queue, portabletest::TestDeviceMultiCollection3& collection, double xvalue = 0.) const;
0043 
0044     void checkZero(Queue& queue, portabletest::TestDeviceCollection const& collection) const;
0045     void checkZero(Queue& queue, portabletest::TestDeviceMultiCollection2 const& collection) const;
0046     void checkZero(Queue& queue, portabletest::TestDeviceMultiCollection3 const& collection) const;
0047     void checkZero(Queue& queue, portabletest::TestDeviceObject const& object) const;
0048   };
0049 
0050 }  // namespace ALPAKA_ACCELERATOR_NAMESPACE
0051 
0052 #endif  // HeterogeneousCore_AlpakaTest_plugins_alpaka_TestAlgo_h