EIC 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
 

Functions

void createSeedsForGroupSycl (const QueueWrapper &wrappedQueue, const detail::DeviceSeedfinderConfig &seedfinderConfig, const DeviceExperimentCuts &deviceCuts, const std::vector< detail::DeviceSpacePoint > &bottomSPs, const std::vector< detail::DeviceSpacePoint > &middleSPs, const std::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 availabe SYCL platforms and devices.
 

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 ( const QueueWrapper &  wrappedQueue,
const detail::DeviceSeedfinderConfig &  seedfinderConfig,
const DeviceExperimentCuts &  deviceCuts,
const std::vector< detail::DeviceSpacePoint > &  bottomSPs,
const std::vector< detail::DeviceSpacePoint > &  middleSPs,
const std::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]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]{bottom,middle,top}SPs are arrays of simplified internal space point structures of {bottom, middle, top} space points
[out]seedsholds of the generated seed indices and weight

Definition at line 39 of file CreateSeedsForGroupSycl.cpp.

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

References kdfinder::abs(), ACTS_FATAL, ACTS_LOCAL_LOGGER, Acts::Sycl::detail::SeedData::bottom, c, calculate1DimNDRange(), calculate2DimNDRange(), Acts::Sycl::detail::DeviceSeedfinderConfig::collisionRegionMax, Acts::Sycl::detail::DeviceSeedfinderConfig::collisionRegionMin, Acts::Sycl::detail::DeviceSeedfinderConfig::compatSeedLimit, Acts::Sycl::detail::DeviceSeedfinderConfig::compatSeedWeight, Acts::Sycl::detail::DeviceLinEqCircle::cotTheta, Acts::Sycl::detail::DeviceSeedfinderConfig::cotThetaMax, Acts::Sycl::detail::DeviceTriplet::curvature, Acts::Sycl::detail::DeviceSeedfinderConfig::deltaInvHelixDiameter, deltaR(), Acts::Sycl::detail::DeviceSeedfinderConfig::deltaRMax, Acts::Sycl::detail::DeviceSeedfinderConfig::deltaRMin, Acts::UnitConstants::e, Acts::Sycl::detail::DeviceLinEqCircle::er, exit(), Acts::Sycl::detail::DeviceSeedfinderConfig::filterDeltaRMin, Acts::getDefaultLogger(), Acts::Sycl::QueueWrapper::getQueue(), Acts::UnitConstants::h, handler(), Acts::Sycl::detail::DeviceLinEqCircle::iDeltaR, Acts::Sycl::detail::DeviceSeedfinderConfig::impactMax, Acts::Sycl::detail::DeviceSeedfinderConfig::impactWeightFactor, Acts::Logging::INFO, it, Acts::IntegrationTest::L, Acts::UnitConstants::m, M, Acts::Sycl::detail::DeviceSeedfinderConfig::maxScatteringAngle2, mid, Acts::Sycl::detail::SeedData::middle, min, Acts::Sycl::detail::DeviceSeedfinderConfig::minHelixDiameter2, Acts::Sycl::detail::DeviceSeedfinderConfig::pT2perRadius, Acts::IntegrationTest::R, read(), Acts::Sycl::DeviceExperimentCuts::seedWeight(), Acts::Sycl::detail::DeviceSeedfinderConfig::sigmaScattering, Acts::Sycl::DeviceExperimentCuts::singleSeedCut(), T, t, Acts::Sycl::detail::SeedData::top, Acts::Sycl::detail::DeviceTriplet::topSPIndex, Acts::Sycl::detail::DeviceLinEqCircle::u, Acts::Sycl::detail::DeviceLinEqCircle::v, Acts::Sycl::detail::SeedData::weight, x, y, and Acts::Sycl::detail::DeviceLinEqCircle::zo.

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 availabe 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 name, and conf::version.

Referenced by CommandLineArguments::parse().

+ Here is the caller graph for this function: