Class CUDAMacroEnvironment¶
Defined in File CUDAMacroEnvironment.h
Nested Relationships¶
Nested Types¶
Class Documentation¶
-
class CUDAMacroEnvironment¶
This class is CUDASimulation’s internal handler for macro environment functionality
Public Functions
-
CUDAMacroEnvironment(const EnvironmentData &description, const CUDASimulation &_cudaSimulation)¶
Normal constructor
- Parameters:
description – Agent description of the agent
_cudaSimulation – Parent CUDASimulation of the agent
-
CUDAMacroEnvironment(CUDAMacroEnvironment&) = delete¶
-
CUDAMacroEnvironment(CUDAMacroEnvironment&&) = delete¶
-
void init(cudaStream_t stream)¶
Performs CUDA allocations, and registers CURVE variables
-
void init(const SubEnvironmentData &mapping, const CUDAMacroEnvironment &master_macro_env, cudaStream_t stream)¶
Performs CUDA allocations, and registers CURVE variables Initialises submodel mappings too
Note
This must be called after the master model CUDAMacroEnvironment has init
- Parameters:
mapping – The SubEnvironment mapping info
master_macro_env – The master model’s macro env to map sub macro properties with
stream – The CUDAStream to use for CUDA operations
-
void free()¶
Release all CUDA allocations, and unregisters CURVE variables
-
void mapRTCVariables(detail::curve::CurveRTCHost &curve_header) const¶
Register the properties to the provided RTC header
- Parameters:
curve_header – The RTC header to act upon
-
void unmapRTCVariables(detail::curve::CurveRTCHost &curve_header) const¶
Release the properties to the provided RTC header
- Parameters:
curve_header – The RTC header to act upon
-
void registerCurveVariables(detail::curve::HostCurve &curve) const¶
Register (and set) all owned macro properties within the specified curve instance
- Parameters:
curve – The curve instance to act upon
-
void resetFlagsAsync(const std::vector<cudaStream_t> &streams)¶
Reset the flags used by seatbelts to catch potential race conditions
- Parameters:
streams – Streams to async reset over
-
bool getDeviceReadFlag(const std::string &property_name)¶
Returns the current state of the device read flag for the named macro property
- Parameters:
property_name – Name of the macro property to query
-
bool getDeviceWriteFlag(const std::string &property_name)¶
Returns the current state of the device read flag for the named macro property
- Parameters:
property_name – Name of the macro property to query
-
unsigned int getDeviceRWFlags(const std::string &property_name)¶
Returns the raw flag variable used for read write flag for the named macro property
Note
This means both can be checked with a single memcpy
Note
Bit 0 being set means read has occurred, bit 1 being set means write has occurred
- Parameters:
property_name – Name of the macro property to query
-
template<typename T, unsigned int I, unsigned int J, unsigned int K, unsigned int W>
HostMacroProperty<T, I, J, K, W> getProperty(const std::string &name)¶ Returns a HostAPI style direct accessor the macro property
- Parameters:
name – Name of the macro property
- Template Parameters:
T – Type of the macro property
I – 1st dimension length
J – 2nd dimension length
K – 3rd dimension length
W – 4th dimension length
-
CUDAMacroEnvironment(const EnvironmentData &description, const CUDASimulation &_cudaSimulation)¶