2 Copyright (C) 2012, 2013 fmaj7b5.info
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #ifndef FM7b5_CUDA_STREAM_H
19 #define FM7b5_CUDA_STREAM_H
22 #include <cuda_runtime.h>
29 operator cudaStream_t();
31 cudaError_t query() const;
32 cudaError_t synchronize() const;
33 cudaError_t wait_event(cudaEvent_t event, unsigned int flags) const;
36 cudaStream_t m_stream;
43 status = cudaStreamCreate(&m_stream);
45 if (status != cudaSuccess) {
46 throw std::runtime_error(cudaGetErrorString(status));
54 status = cudaStreamDestroy(m_stream);
56 if (status != cudaSuccess) {
57 throw std::runtime_error(cudaGetErrorString(status));
61 Stream::operator cudaStream_t()
69 return cudaStreamQuery(m_stream);
73 Stream::synchronize() const
75 return cudaStreamSynchronize(m_stream);
80 Stream::wait_event(cudaEvent_t event, unsigned int flags) const
82 return cudaStreamWaitEvent(m_stream, event, flags);
85 #endif /* FM7b5_CUDA_STREAM_H */