2014-02-11 17:34:56 +00:00
|
|
|
//============================================================================
|
|
|
|
// Copyright (c) Kitware, Inc.
|
|
|
|
// All rights reserved.
|
|
|
|
// See LICENSE.txt for details.
|
|
|
|
// This software is distributed WITHOUT ANY WARRANTY; without even
|
|
|
|
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
|
|
// PURPOSE. See the above copyright notice for more information.
|
|
|
|
//
|
2017-09-20 21:33:44 +00:00
|
|
|
// Copyright 2014 National Technology & Engineering Solutions of Sandia, LLC (NTESS).
|
2014-02-11 17:34:56 +00:00
|
|
|
// Copyright 2014 UT-Battelle, LLC.
|
2015-05-21 12:09:22 +00:00
|
|
|
// Copyright 2014 Los Alamos National Security.
|
2014-02-11 17:34:56 +00:00
|
|
|
//
|
2017-09-20 21:33:44 +00:00
|
|
|
// Under the terms of Contract DE-NA0003525 with NTESS,
|
2014-02-11 17:34:56 +00:00
|
|
|
// the U.S. Government retains certain rights in this software.
|
|
|
|
//
|
|
|
|
// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National
|
|
|
|
// Laboratory (LANL), the U.S. Government retains certain rights in
|
|
|
|
// this software.
|
|
|
|
//============================================================================
|
2014-03-07 15:19:09 +00:00
|
|
|
#ifndef vtk_m_cont_DeviceAdapter_h
|
|
|
|
#define vtk_m_cont_DeviceAdapter_h
|
2014-02-11 17:34:56 +00:00
|
|
|
|
|
|
|
// These are listed in non-alphabetical order because this is the conceptual
|
|
|
|
// order in which the sub-files are loaded. (But the compile should still
|
2017-05-18 14:51:24 +00:00
|
|
|
// succeed of the order is changed.) Turn off formatting to keep the order.
|
2014-02-11 17:34:56 +00:00
|
|
|
|
2017-05-18 14:51:24 +00:00
|
|
|
// clang-format off
|
2019-04-09 13:52:53 +00:00
|
|
|
#include <vtkm/cont/cuda/DeviceAdapterCuda.h>
|
|
|
|
#include <vtkm/cont/openmp/DeviceAdapterOpenMP.h>
|
|
|
|
#include <vtkm/cont/serial/DeviceAdapterSerial.h>
|
|
|
|
#include <vtkm/cont/tbb/DeviceAdapterTBB.h>
|
|
|
|
|
2014-11-25 14:14:04 +00:00
|
|
|
#include <vtkm/cont/DeviceAdapterAlgorithm.h>
|
2019-04-03 20:28:31 +00:00
|
|
|
#include <vtkm/cont/DeviceAdapterTag.h>
|
2014-02-11 17:34:56 +00:00
|
|
|
#include <vtkm/cont/internal/ArrayManagerExecution.h>
|
2019-04-09 13:52:53 +00:00
|
|
|
|
2017-05-18 14:51:24 +00:00
|
|
|
// clang-format on
|
2014-02-11 17:34:56 +00:00
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
namespace vtkm
|
|
|
|
{
|
|
|
|
namespace cont
|
|
|
|
{
|
2014-02-11 17:34:56 +00:00
|
|
|
|
|
|
|
#ifdef VTKM_DOXYGEN_ONLY
|
|
|
|
/// \brief A tag specifying the interface between the control and execution environments.
|
|
|
|
///
|
|
|
|
/// A DeviceAdapter tag specifies a set of functions and classes that provide
|
|
|
|
/// mechanisms to run algorithms on a type of parallel device. The tag
|
|
|
|
/// DeviceAdapterTag___ does not actually exist. Rather, this documentation is
|
|
|
|
/// provided to describe the interface for a DeviceAdapter. Loading the
|
2019-04-09 13:52:53 +00:00
|
|
|
/// vtkm/cont/DeviceAdapter.h header file will import all device adapters
|
|
|
|
/// appropriate for the current compile environment.
|
2014-02-11 17:34:56 +00:00
|
|
|
///
|
2019-04-09 13:52:53 +00:00
|
|
|
/// \li \c vtkm::cont::DeviceAdapterTagSerial Runs all algorithms in serial. Can be
|
2014-02-11 17:34:56 +00:00
|
|
|
/// helpful for debugging.
|
2019-04-09 13:52:53 +00:00
|
|
|
/// \li \c vtkm::cont::DeviceAdapterTagCuda Dispatches and runs algorithms on a GPU
|
2014-02-11 17:34:56 +00:00
|
|
|
/// using CUDA. Must be compiling with a CUDA compiler (nvcc).
|
2019-04-09 13:52:53 +00:00
|
|
|
/// \li \c vtkm::cont::DeviceAdapterTagOpenMP Dispatches an algorithm over multiple
|
2014-02-11 17:34:56 +00:00
|
|
|
/// CPU cores using OpenMP compiler directives. Must be compiling with an
|
|
|
|
/// OpenMP-compliant compiler with OpenMP pragmas enabled.
|
2019-04-09 13:52:53 +00:00
|
|
|
/// \li \c vtkm::cont::DeviceAdapterTagTBB Dispatches and runs algorithms on multiple
|
2014-02-11 17:34:56 +00:00
|
|
|
/// threads using the Intel Threading Building Blocks (TBB) libraries. Must
|
|
|
|
/// have the TBB headers available and the resulting code must be linked with
|
|
|
|
/// the TBB libraries.
|
|
|
|
///
|
2019-04-09 13:52:53 +00:00
|
|
|
/// To execute algorithms on any device, see Algorithm.h which allows
|
|
|
|
/// for abitrary device execution.
|
2014-02-11 17:34:56 +00:00
|
|
|
/// See the ArrayManagerExecution.h and DeviceAdapterAlgorithm.h files for
|
|
|
|
/// documentation on all the functions and classes that must be
|
|
|
|
/// overloaded/specialized to create a new device adapter.
|
|
|
|
///
|
2017-05-18 14:29:41 +00:00
|
|
|
struct DeviceAdapterTag___
|
|
|
|
{
|
|
|
|
};
|
2014-02-11 17:34:56 +00:00
|
|
|
#endif //VTKM_DOXYGEN_ONLY
|
|
|
|
|
2017-05-18 14:29:41 +00:00
|
|
|
namespace internal
|
|
|
|
{
|
2014-02-11 17:34:56 +00:00
|
|
|
|
|
|
|
} // namespace internal
|
|
|
|
}
|
|
|
|
} // namespace vtkm::cont
|
|
|
|
|
2014-06-11 16:43:36 +00:00
|
|
|
#endif //vtk_m_cont_DeviceAdapter_h
|