LAMA
|
Class that sycnchronizes with a CUDA stream. More...
#include <CUDAStreamSyncToken.hpp>
Public Member Functions | |
CUDAStreamSyncToken (CUDAContextPtr context, CUstream stream) | |
Constructor for a sychronization token. | |
virtual | ~CUDAStreamSyncToken () |
virtual void | wait () |
Method to wait on the completion of an operation. | |
virtual bool | probe () const |
Predicate to ask if an asynchronous operation is already completed. | |
cudaStream_t | getCUDAStream () const |
void | createTimingEvent (CUevent &event) const |
void | createEvent (CUevent &event) const |
void | getTime (float *time, CUevent &startEvent, CUevent &stopEvent) const |
bool | probeEvent (const CUevent &stopEvent) const |
void | recordEvent (const CUevent event) |
bool | queryEvent (const CUevent event) const |
void | synchronizeEvent (const CUevent event) const |
bool | isSynchronized () const |
Query whether token has already been synchronized. | |
virtual void | writeAt (std::ostream &stream) const |
Base class provides a default implementation for the virtual method of Printable. | |
void | pushAccess (std::auto_ptr< BaseAccess > access) |
Add a read/write access to the token so that LAMA arrays will be locked until synchronization. | |
void | pushArray (std::auto_ptr< _LAMAArray > array) |
Add a LAMA array that will be free after synchronization. | |
void | pushSyncToken (std::auto_ptr< SyncToken > syncToken) |
Add a Synctoken that will be synchronized after synchronization. | |
Protected Member Functions | |
void | setSynchronized () |
This method should be called by base classes after a successful wait. | |
LAMA_LOG_DECL_STATIC_LOGGER (logger) | |
logger for this class | |
Private Attributes | |
CUDAContextPtr | mCUDAContext |
const CUstream | mStream |
CUevent | mEvent |
Friends | |
class | CUDAStreamSyncTokenPtr |
Class that sycnchronizes with a CUDA stream.
lama::CUDAStreamSyncToken::CUDAStreamSyncToken | ( | CUDAContextPtr | context, |
CUstream | stream | ||
) |
Constructor for a sychronization token.
[in] | context | is the CUDAcontext of the stream |
[in] | is | the handle of the CUDA stream. |
A pointer to the CUDA context is required to enable/disable it.
lama::CUDAStreamSyncToken::~CUDAStreamSyncToken | ( | ) | [virtual] |
References wait().
void lama::CUDAStreamSyncToken::createEvent | ( | CUevent & | event | ) | const |
References LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, and mCUDAContext.
void lama::CUDAStreamSyncToken::createTimingEvent | ( | CUevent & | event | ) | const |
References LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, and mCUDAContext.
Referenced by CUDATracerSyncToken::CUDATracerSyncToken().
References mStream.
Referenced by lama::CUDABLAS1::ass(), lama::CUDABLAS1::asum(), lama::CUDABLAS1::axpy(), lama::CUDABLAS1::copy(), lama::CUDABLAS1::dot(), lama::CUDABLAS2::gbmv(), lama::CUDABLAS3::gemm(), lama::CUDABLAS2::gemv(), lama::CUDABLAS2::ger(), lama::CUDABLAS1::iamax(), lama::CUDABLAS1::nrm2(), lama::CUDABLAS1::rot(), lama::CUDABLAS1::rotm(), lama::CUDABLAS2::sbmv(), lama::CUDABLAS1::scal(), lama::CUDABLAS2::spmv(), lama::CUDABLAS2::spr(), lama::CUDABLAS2::spr2(), lama::CUDABLAS1::sum(), lama::CUDABLAS1::swap(), lama::CUDABLAS2::symv(), lama::CUDABLAS2::syr(), lama::CUDABLAS2::syr2(), lama::CUDABLAS2::tbmv(), lama::CUDABLAS2::tbsv(), lama::CUDABLAS2::tpmv(), lama::CUDABLAS2::tpsv(), lama::CUDABLAS2::trmv(), lama::CUDABLAS3::trsm(), and lama::CUDABLAS2::trsv().
void lama::CUDAStreamSyncToken::getTime | ( | float * | time, |
CUevent & | startEvent, | ||
CUevent & | stopEvent | ||
) | const |
References LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, and mCUDAContext.
Referenced by CUDATracerSyncToken::wait().
bool lama::SyncToken::isSynchronized | ( | ) | const [inherited] |
Query whether token has already been synchronized.
References lama::SyncToken::mSynchronized.
Referenced by lama::PGASSyncToken::probe(), probe(), lama::NoSyncToken::wait(), lama::PGASSyncToken::wait(), lama::TaskSyncToken::wait(), lama::MPISyncToken::wait(), wait(), lama::NoSyncToken::writeAt(), lama::PGASSyncToken::writeAt(), lama::TaskSyncToken::writeAt(), lama::MPISyncToken::writeAt(), CUDATracerSyncToken::~CUDATracerSyncToken(), lama::MPISyncToken::~MPISyncToken(), lama::NoSyncToken::~NoSyncToken(), and lama::PGASSyncToken::~PGASSyncToken().
lama::SyncToken::LAMA_LOG_DECL_STATIC_LOGGER | ( | logger | ) | [protected, inherited] |
logger for this class
Reimplemented in lama::TaskSyncToken, and CUDATracerSyncToken.
bool lama::CUDAStreamSyncToken::probe | ( | ) | const [virtual] |
Predicate to ask if an asynchronous operation is already completed.
Implements lama::SyncToken.
References lama::SyncToken::isSynchronized(), mEvent, and probeEvent().
bool lama::CUDAStreamSyncToken::probeEvent | ( | const CUevent & | stopEvent | ) | const |
References LAMA_ASSERT_ERROR, LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, and mCUDAContext.
Referenced by CUDATracerSyncToken::probe(), and probe().
void lama::SyncToken::pushAccess | ( | std::auto_ptr< BaseAccess > | access | ) | [inherited] |
Add a read/write access to the token so that LAMA arrays will be locked until synchronization.
References LAMA_ASSERT_ERROR, lama::SyncToken::mAccesses, and lama::SyncToken::mSynchronized.
Referenced by lama::ELLStorage< T >::matrixTimesVectorAsync(), lama::CSRStorage< T >::matrixTimesVectorAsync(), and lama::COOStorage< T >::matrixTimesVectorAsyncToDo().
void lama::SyncToken::pushArray | ( | std::auto_ptr< _LAMAArray > | array | ) | [inherited] |
Add a LAMA array that will be free after synchronization.
References LAMA_ASSERT_ERROR, lama::SyncToken::mArrays, and lama::SyncToken::mSynchronized.
void lama::SyncToken::pushSyncToken | ( | std::auto_ptr< SyncToken > | syncToken | ) | [inherited] |
Add a Synctoken that will be synchronized after synchronization.
References LAMA_ASSERT_ERROR, lama::SyncToken::mChilds, and lama::SyncToken::mSynchronized.
Referenced by CUDATracerHelper< Tracer >::CUDATracerHelper().
bool lama::CUDAStreamSyncToken::queryEvent | ( | const CUevent | event | ) | const |
References LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, and mCUDAContext.
void lama::CUDAStreamSyncToken::recordEvent | ( | const CUevent | event | ) |
References LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, mCUDAContext, and mStream.
Referenced by CUDATracerSyncToken::CUDATracerSyncToken(), and CUDATracerSyncToken::recordStopEvent().
void lama::SyncToken::setSynchronized | ( | ) | [protected, inherited] |
This method should be called by base classes after a successful wait.
References LAMA_THROWEXCEPTION, lama::SyncToken::mAccesses, lama::SyncToken::mArrays, lama::SyncToken::mChilds, and lama::SyncToken::mSynchronized.
Referenced by lama::NoSyncToken::wait(), CUDATracerSyncToken::wait(), lama::PGASSyncToken::wait(), lama::TaskSyncToken::wait(), lama::MPISyncToken::wait(), wait(), and lama::NoSyncToken::~NoSyncToken().
void lama::CUDAStreamSyncToken::synchronizeEvent | ( | const CUevent | event | ) | const |
References LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, and mCUDAContext.
Referenced by CUDATracerSyncToken::wait().
void lama::CUDAStreamSyncToken::wait | ( | ) | [virtual] |
Method to wait on the completion of an operation.
Implements lama::SyncToken.
References lama::SyncToken::isSynchronized(), LAMA_CONTEXT_ACCESS, LAMA_CUDA_DRV_CALL, LAMA_REGION, mCUDAContext, mEvent, mStream, and lama::SyncToken::setSynchronized().
Referenced by ~CUDAStreamSyncToken().
void lama::SyncToken::writeAt | ( | std::ostream & | stream | ) | const [virtual, inherited] |
Base class provides a default implementation for the virtual method of Printable.
Reimplemented from Printable.
Reimplemented in lama::MPISyncToken, lama::TaskSyncToken, lama::PGASSyncToken, and lama::NoSyncToken.
References lama::SyncToken::mSynchronized.
friend class CUDAStreamSyncTokenPtr [friend] |
Referenced by createEvent(), createTimingEvent(), getTime(), probeEvent(), queryEvent(), recordEvent(), synchronizeEvent(), and wait().
CUevent lama::CUDAStreamSyncToken::mEvent [private] |
const CUstream lama::CUDAStreamSyncToken::mStream [private] |
Referenced by getCUDAStream(), recordEvent(), and wait().