Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::Sycl Namespace Reference

Namespaces

namespace  detail
 

Classes

class  DeviceExperimentCuts
 
class  SeedFinder
 
struct  DeviceSelector
 Custom device selector that refuses to select NVIDIA OpenCL backends. More...
 
class  QueueWrapper
 

Typedefs

template<typename T >
using device_array = std::unique_ptr< T, detail::DeviceArrayDeleter >
 Convenience type for using (primitive) variable arrays on a SYCL device.
 

Functions

void createSeedsForGroupSycl (QueueWrapper wrappedQueue, vecmem::memory_resource &resource, vecmem::memory_resource *device_resource, const detail::DeviceSeedFinderConfig &seedFinderConfig, const DeviceExperimentCuts &deviceCuts, vecmem::vector< detail::DeviceSpacePoint > &bottomSPs, vecmem::vector< detail::DeviceSpacePoint > &middleSPs, vecmem::vector< detail::DeviceSpacePoint > &topSPs, std::vector< std::vector< detail::SeedData >> &seeds)
 Seedfinding algorithm implemented in SYCL.
 
cl::sycl::nd_range< 1 > calculate1DimNDRange (const uint32_t numThreads, const uint32_t workGroupSize)
 Calculate global range of 1 dimensional nd_range for kernel execution.
 
cl::sycl::nd_range< 2 > calculate2DimNDRange (const uint32_t numThreadsDim0, const uint32_t numThreadsDim1, const uint32_t workGroupSize)
 Calculate global and local range of 2 dimensional nd_range for kernel execution.
 
void listPlatforms ()
 This function allows us to list available SYCL platforms and devices.
 
template<typename T >
device_array< Tmake_device_array (std::size_t size, cl::sycl::queue &queue)
 Function creating a primitive array in SYCL device memory.
 

Typedef Documentation

template<typename T >
using Acts::Sycl::device_array = typedef std::unique_ptr<T, detail::DeviceArrayDeleter>

Convenience type for using (primitive) variable arrays on a SYCL device.

Definition at line 43 of file Arrays.hpp.

View newest version in sPHENIX GitHub at line 43 of file Arrays.hpp

Function Documentation

cl::sycl::nd_range< 1 > Acts::Sycl::calculate1DimNDRange ( const uint32_t  numThreads,
const uint32_t  workGroupSize 
)

Calculate global range of 1 dimensional nd_range for kernel execution.

Parameters
[in]numThreadsis the number of threads globally
[in]workGroupSizeis the number of threads in one work group

Calculates the global dimension of the nd_range, which is the smallest multiple of workGroupSize that is not smaller than numThreads.

Returns
a one dimensional nd_range of threads

Definition at line 13 of file CalculateNdRange.cpp.

View newest version in sPHENIX GitHub at line 13 of file CalculateNdRange.cpp

Referenced by createSeedsForGroupSycl().

+ Here is the caller graph for this function:

cl::sycl::nd_range< 2 > Acts::Sycl::calculate2DimNDRange ( const uint32_t  numThreadsDim0,
const uint32_t  numThreadsDim1,
const uint32_t  workGroupSize 
)

Calculate global and local range of 2 dimensional nd_range for kernel execution.

Parameters
[in]numThreadsDim0is the number of threads globally in the first dimension
[in]numThreadsDim1is the number of threads globally in the second dimension
[in]workGroupSizeis the number of threads in one work group

Local range is calculated the following way:

  • local range dimensions multiplied together should be equal to workGroupSize
  • if workGroupSize > numThreadsDim1: set local range in the second dimension to be equal to the smallest factor of 2, that is not smaller that the number of threads globally in the second dimension
  • else: local range is {1, workGroupSize}

Global range is calculated the following way:

  • set the number of threads in both dimensions to the smallest multiple of the work group size in that dimension
Returns
a two dimensional nd_range of threads

Definition at line 20 of file CalculateNdRange.cpp.

View newest version in sPHENIX GitHub at line 20 of file CalculateNdRange.cpp

Referenced by createSeedsForGroupSycl().

+ Here is the caller graph for this function:

void Acts::Sycl::createSeedsForGroupSycl ( QueueWrapper  wrappedQueue,
vecmem::memory_resource &  resource,
vecmem::memory_resource *  device_resource,
const detail::DeviceSeedFinderConfig &  seedFinderConfig,
const DeviceExperimentCuts &  deviceCuts,
vecmem::vector< detail::DeviceSpacePoint > &  bottomSPs,
vecmem::vector< detail::DeviceSpacePoint > &  middleSPs,
vecmem::vector< detail::DeviceSpacePoint > &  topSPs,
std::vector< std::vector< detail::SeedData >> &  seeds 
)

Seedfinding algorithm implemented in SYCL.

Parameters
[in]wrappedQueueis a wrapper object of the SYCL queue
[in]resourceis the host-accessible memory resource to use
[in]device_resourceis the optional device-accessible memory resource, necessary if resource is not device-accessible
[in]seedFinderConfigincludes the required configuration parameters for the algorithm
[in]deviceCutsis an experiment specific object with customizable seed weight altering and seed cutting member functions
[in]bottomSPsan array of simplified internal space point structures of bottom space points
[in]middleSPsan array of simplified internal space point structures of middle space points
[in]topSPsan array of simplified internal space point structures of top space points
[out]seedsholds of the generated seed indices and weight

Definition at line 47 of file CreateSeedsForGroupSycl.cpp.

View newest version in sPHENIX GitHub at line 47 of file CreateSeedsForGroupSycl.cpp

References ACTS_FATAL, ACTS_LOCAL_LOGGER, calculate1DimNDRange(), calculate2DimNDRange(), Acts::UnitConstants::e, Acts::getDefaultLogger(), Acts::Sycl::QueueWrapper::getQueue(), h, handler(), i, ambiguity_solver_full_chain::idx, Acts::Logging::INFO, Acts::UnitConstants::min, t, and Acts::UnitConstants::T.

Referenced by Acts::Sycl::SeedFinder< external_spacepoint_t >::createSeedsForGroup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Acts::Sycl::listPlatforms ( )

This function allows us to list available SYCL platforms and devices.

Available platforms and devices only include previously linked targets by CMake, which can optionally be altered by environment variable SYCL_BE.

Definition at line 20 of file ListPlatforms.cpp.

View newest version in sPHENIX GitHub at line 20 of file ListPlatforms.cpp

References perf_headwind::name.

Referenced by CommandLineArguments::parse().

+ Here is the caller graph for this function:

template<typename T >
device_array<T> Acts::Sycl::make_device_array ( std::size_t  size,
cl::sycl::queue &  queue 
)

Function creating a primitive array in SYCL device memory.

Definition at line 47 of file Arrays.hpp.

View newest version in sPHENIX GitHub at line 47 of file Arrays.hpp

References size.