PxCudaHelpersExt#

Fully qualified name: physx::Ext::PxCudaHelpersExt

Defined in include/extensions/PxCudaHelpersExt.h

class PxCudaHelpersExt#

Public Static Functions

template<typename T>
static inline T *allocDeviceBuffer(
PxCudaContextManager &cudaContextManager,
PxU64 numElements,
)#

Allocates a device buffer and returns the pointer to the memory.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context the allocation should be attributed to.

  • numElements[in] the number of elements of type T to allocate.

Returns:

a pointer to the allocated memory.

template<typename T>
static inline void freeDeviceBuffer(
PxCudaContextManager &cudaContextManager,
T *&deviceBuffer,
)#

Frees a device buffer.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context the device buffer is attributed to.

  • deviceBuffer[in] reference to a pointer pointing to the device memory buffer.

template<typename T>
static inline T *allocPinnedHostBuffer(
PxCudaContextManager &cudaContextManager,
PxU64 numElements,
)#

Allocates a pinned host buffer and returns the pointer to the memory.

A pinned host buffer can be used on the gpu after getting a mapped device pointer from the pinned host buffer pointer, see getMappedDevicePtr The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context the allocation should be attributed to.

  • numElements[in] the number of elements of type T to allocate.

Returns:

a pointer to the allocated memory.

template<typename T>
static inline void freePinnedHostBuffer(
PxCudaContextManager &cudaContextManager,
T *&pinnedHostBuffer,
)#

Frees a pinned host buffer.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context the pinned memory buffer is attributed to.

  • pinnedHostBuffer[in] reference to a pointer pointing to the pinned memory buffer.

template<typename T>
static inline void copyDToH(
PxCudaContextManager &cudaContextManager,
T *hostBuffer,
const T *deviceBuffer,
PxU64 numElements,
)#

Copies a device buffer to the host.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context executing the operation.

  • hostBuffer[in] pointer to the destination (pinned) host memory buffer.

  • deviceBuffer[in] pointer to the source device buffer.

  • numElements[in] the number of elements of type T to copy.

template<typename T>
static inline void copyHToD(
PxCudaContextManager &cudaContextManager,
T *deviceBuffer,
const T *hostBuffer,
PxU64 numElements,
)#

Copies a host buffer to the device.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context executing the operation.

  • deviceBuffer[in] pointer to the destination device buffer.

  • hostBuffer[in] pointer to the source (pinned) host memory buffer.

  • numElements[in] the number of elements of type T to copy.

template<typename T>
static inline void copyDToHAsync(
PxCudaContextManager &cudaContextManager,
T *hostBuffer,
const T *deviceBuffer,
PxU64 numElements,
CUstream stream,
)#

Schedules device to host copy operation on the specified stream.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context executing the operation.

  • hostBuffer[in] pointer to the destination (pinned) host memory buffer.

  • deviceBuffer[in] pointer to the source device buffer.

  • numElements[in] the number of elements of type T to copy.

  • stream[in] the CUDA stream to perform the operation on.

template<typename T>
static inline void copyHToDAsync(
PxCudaContextManager &cudaContextManager,
T *deviceBuffer,
const T *hostBuffer,
PxU64 numElements,
CUstream stream,
)#

Schedules host to device copy operation on the specified stream.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context executing the operation.

  • deviceBuffer[in] pointer to the destination device buffer.

  • hostBuffer[in] pointer to the source (pinned) host memory buffer.

  • numElements[in] the number of elements of type T to copy.

  • stream[in] the CUDA stream to perform the operation on.

template<typename T>
static inline void copyDToDAsync(
PxCudaContextManager &cudaContextManager,
T *dstDeviceBuffer,
const T *srcDeviceBuffer,
PxU64 numElements,
CUstream stream,
)#

Schedules device to device copy operation on the specified stream.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context executing the operation.

  • dstDeviceBuffer[in] pointer to the destination device buffer.

  • srcDeviceBuffer[in] pointer to the source device buffer.

  • numElements[in] the number of elements of type T to copy.

  • stream[in] the CUDA stream to perform the operation on.

template<typename T>
static inline void memsetAsync(
PxCudaContextManager &cudaContextManager,
T *dstDeviceBuffer,
const T &value,
PxU64 numElements,
CUstream stream,
)#

Schedules a memset operation on the device on the specified stream.

Only supported for 1 bytes or 4 byte data types.

The cuda context will get acquired automatically

Parameters:
  • cudaContextManager[in] the PxCudaContextManager managing the CUDA context executing the operation.

  • dstDeviceBuffer[in] pointer to the destination device buffer.

  • value[in] the value to set the memory to.

  • numElements[in] the number of elements of type T to set.

  • stream[in] the CUDA stream to perform the operation on.