blob: e261a5104e9c3d5ec42e097e98c81f3449ced508 [file] [log] [blame]
#include "THCStream.h"
#include <cuda_runtime_api.h>
#include "THAtomic.h"
THCStream* THCStream_new(int flags)
{
THCStream* self = (THCStream*) malloc(sizeof(THCStream));
self->refcount = 1;
THCudaCheck(cudaGetDevice(&self->device));
THCudaCheck(cudaStreamCreateWithFlags(&self->stream, flags));
return self;
}
void THCStream_free(THCStream* self)
{
if (!self) {
return;
}
if (THAtomicDecrementRef(&self->refcount)) {
THCudaCheck(cudaStreamDestroy(self->stream));
free(self);
}
}
void THCStream_retain(THCStream* self)
{
THAtomicIncrementRef(&self->refcount);
}