cuSBF
Loading...
Searching...
No Matches
Public Member Functions | List of all members
cusbf::detail::FastxPipelineState Class Reference

Public Member Functions

 FastxPipelineState ()=default
 
 FastxPipelineState (const FastxPipelineState &)=delete
 
FastxPipelineStateoperator= (const FastxPipelineState &)=delete
 
 FastxPipelineState (FastxPipelineState &&) noexcept=default
 
FastxPipelineStateoperator= (FastxPipelineState &&) noexcept=default
 
 ~FastxPipelineState ()=default
 
thrust::device_vector< char > & sequence_device () noexcept
 
const thrust::device_vector< char > & sequence_device () const noexcept
 
thrust::device_vector< uint64_t > & dense_packed_words_device () noexcept
 
const thrust::device_vector< uint64_t > & dense_packed_words_device () const noexcept
 
thrust::device_vector< uint8_t > & result_buffer_device () noexcept
 
const thrust::device_vector< uint8_t > & result_buffer_device () const noexcept
 
thrust::device_vector< QueryLayoutRecord > & query_layout_records_device () noexcept
 
const thrust::device_vector< QueryLayoutRecord > & query_layout_records_device () const noexcept
 
thrust::device_vector< uint64_t > & record_positive_kmers_device () noexcept
 
const thrust::device_vector< uint64_t > & record_positive_kmers_device () const noexcept
 
FastxPinnedSequenceBuffernormalized_sequence_ping (size_t ping) noexcept
 
const FastxPinnedSequenceBuffernormalized_sequence_ping (size_t ping) const noexcept
 
std::vector< NormalizedRecord > & normalized_records_ping (size_t ping) noexcept
 
const std::vector< NormalizedRecord > & normalized_records_ping (size_t ping) const noexcept
 
std::string & normalized_sequence_scratch () noexcept
 
const std::string & normalized_sequence_scratch () const noexcept
 
std::vector< NormalizedRecord > & normalized_records_scratch () noexcept
 
const std::vector< NormalizedRecord > & normalized_records_scratch () const noexcept
 
std::vector< uint64_t > & record_positive_kmers_scratch () noexcept
 
const std::vector< uint64_t > & record_positive_kmers_scratch () const noexcept
 
std::vector< uint8_t > & result_hits_scratch () noexcept
 
const std::vector< uint8_t > & result_hits_scratch () const noexcept
 
void ensure_sequence_capacity (uint64_t bases)
 
void ensure_dense_packed_capacity (uint64_t words)
 
void ensure_result_capacity (uint64_t kmers)
 
Result< voidstage_sequence (std::span< const char > sequence, cuda::stream_ref stream)
 
Result< device_span< const char > > staged_sequence_view (std::span< const char > sequence, cuda::stream_ref stream)
 
Result< voidstage_dense_packed (std::span< const uint64_t > words, cuda::stream_ref stream)
 
Result< device_span< const uint64_t > > staged_dense_packed_view (std::span< const uint64_t > words, cuda::stream_ref stream)
 
Result< device_span< const char > > stage_sequence_ping (size_t ping, std::string_view sequence, cuda::stream_ref stream)
 
void release_host_pings ()
 
void release_host_scratch ()
 
void release_device_staging ()
 
void release_all ()
 
void shrink_host_scratch ()
 
void shrink_device_staging ()
 
void shrink_all ()
 

Detailed Description

Definition at line 23 of file fastx_pipeline_state.cuh.

Constructor & Destructor Documentation

◆ FastxPipelineState() [1/3]

cusbf::detail::FastxPipelineState::FastxPipelineState ( )
default

◆ FastxPipelineState() [2/3]

cusbf::detail::FastxPipelineState::FastxPipelineState ( const FastxPipelineState )
delete

◆ FastxPipelineState() [3/3]

cusbf::detail::FastxPipelineState::FastxPipelineState ( FastxPipelineState &&  )
defaultnoexcept

◆ ~FastxPipelineState()

cusbf::detail::FastxPipelineState::~FastxPipelineState ( )
default

Member Function Documentation

◆ dense_packed_words_device() [1/2]

const thrust::device_vector< uint64_t > & cusbf::detail::FastxPipelineState::dense_packed_words_device ( ) const
inlinenoexcept

Definition at line 45 of file fastx_pipeline_state.cuh.

45 {
46 return d_dense_packed_words_;
47 }

◆ dense_packed_words_device() [2/2]

thrust::device_vector< uint64_t > & cusbf::detail::FastxPipelineState::dense_packed_words_device ( )
inlinenoexcept

Definition at line 40 of file fastx_pipeline_state.cuh.

40 {
41 return d_dense_packed_words_;
42 }

◆ ensure_dense_packed_capacity()

void cusbf::detail::FastxPipelineState::ensure_dense_packed_capacity ( uint64_t  words)
inline

Definition at line 133 of file fastx_pipeline_state.cuh.

133 {
134 if (words > d_dense_packed_words_.size()) {
135 d_dense_packed_words_.resize(words);
136 }
137 }
Here is the caller graph for this function:

◆ ensure_result_capacity()

void cusbf::detail::FastxPipelineState::ensure_result_capacity ( uint64_t  kmers)
inline

Definition at line 139 of file fastx_pipeline_state.cuh.

139 {
140 if (kmers > d_resultBuffer_.size()) {
141 d_resultBuffer_.resize(kmers);
142 }
143 }
consteval bool separatorPositionAlwaysEncodesInvalid(char *input, uint64_t separatorPosition, uint64_t index)
Recursively tests whether placing the separator byte at any position in an input of valid bytes alway...
Definition Alphabet.cuh:37
Here is the call graph for this function:

◆ ensure_sequence_capacity()

void cusbf::detail::FastxPipelineState::ensure_sequence_capacity ( uint64_t  bases)
inline

Definition at line 127 of file fastx_pipeline_state.cuh.

127 {
128 if (bases > d_sequence_.size()) {
129 d_sequence_.resize(bases);
130 }
131 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ normalized_records_ping() [1/2]

const std::vector< NormalizedRecord > & cusbf::detail::FastxPipelineState::normalized_records_ping ( size_t  ping) const
inlinenoexcept

Definition at line 89 of file fastx_pipeline_state.cuh.

91 {
92 return normalized_records_pings_[ping & 1U];
93 }
Here is the call graph for this function:

◆ normalized_records_ping() [2/2]

std::vector< NormalizedRecord > & cusbf::detail::FastxPipelineState::normalized_records_ping ( size_t  ping)
inlinenoexcept

Definition at line 85 of file fastx_pipeline_state.cuh.

85 {
86 return normalized_records_pings_[ping & 1U];
87 }
Here is the call graph for this function:

◆ normalized_records_scratch() [1/2]

const std::vector< NormalizedRecord > & cusbf::detail::FastxPipelineState::normalized_records_scratch ( ) const
inlinenoexcept

Definition at line 107 of file fastx_pipeline_state.cuh.

107 {
108 return normalized_records_scratch_;
109 }

◆ normalized_records_scratch() [2/2]

std::vector< NormalizedRecord > & cusbf::detail::FastxPipelineState::normalized_records_scratch ( )
inlinenoexcept

Definition at line 103 of file fastx_pipeline_state.cuh.

103 {
104 return normalized_records_scratch_;
105 }

◆ normalized_sequence_ping() [1/2]

const FastxPinnedSequenceBuffer & cusbf::detail::FastxPipelineState::normalized_sequence_ping ( size_t  ping) const
inlinenoexcept

Definition at line 79 of file fastx_pipeline_state.cuh.

81 {
82 return normalized_sequence_pings_[ping & 1U];
83 }
Here is the call graph for this function:

◆ normalized_sequence_ping() [2/2]

FastxPinnedSequenceBuffer & cusbf::detail::FastxPipelineState::normalized_sequence_ping ( size_t  ping)
inlinenoexcept

Definition at line 75 of file fastx_pipeline_state.cuh.

75 {
76 return normalized_sequence_pings_[ping & 1U];
77 }
Here is the call graph for this function:

◆ normalized_sequence_scratch() [1/2]

const std::string & cusbf::detail::FastxPipelineState::normalized_sequence_scratch ( ) const
inlinenoexcept

Definition at line 99 of file fastx_pipeline_state.cuh.

99 {
100 return normalized_sequence_scratch_;
101 }

◆ normalized_sequence_scratch() [2/2]

std::string & cusbf::detail::FastxPipelineState::normalized_sequence_scratch ( )
inlinenoexcept

Definition at line 95 of file fastx_pipeline_state.cuh.

95 {
96 return normalized_sequence_scratch_;
97 }

◆ operator=() [1/2]

FastxPipelineState & cusbf::detail::FastxPipelineState::operator= ( const FastxPipelineState )
delete

◆ operator=() [2/2]

FastxPipelineState & cusbf::detail::FastxPipelineState::operator= ( FastxPipelineState &&  )
defaultnoexcept

◆ query_layout_records_device() [1/2]

const thrust::device_vector< QueryLayoutRecord > & cusbf::detail::FastxPipelineState::query_layout_records_device ( ) const
inlinenoexcept

Definition at line 62 of file fastx_pipeline_state.cuh.

62 {
63 return d_query_layout_records_;
64 }

◆ query_layout_records_device() [2/2]

thrust::device_vector< QueryLayoutRecord > & cusbf::detail::FastxPipelineState::query_layout_records_device ( )
inlinenoexcept

Definition at line 57 of file fastx_pipeline_state.cuh.

57 {
58 return d_query_layout_records_;
59 }

◆ record_positive_kmers_device() [1/2]

const thrust::device_vector< uint64_t > & cusbf::detail::FastxPipelineState::record_positive_kmers_device ( ) const
inlinenoexcept

Definition at line 71 of file fastx_pipeline_state.cuh.

71 {
72 return d_record_positive_kmers_;
73 }

◆ record_positive_kmers_device() [2/2]

thrust::device_vector< uint64_t > & cusbf::detail::FastxPipelineState::record_positive_kmers_device ( )
inlinenoexcept

Definition at line 66 of file fastx_pipeline_state.cuh.

66 {
67 return d_record_positive_kmers_;
68 }

◆ record_positive_kmers_scratch() [1/2]

const std::vector< uint64_t > & cusbf::detail::FastxPipelineState::record_positive_kmers_scratch ( ) const
inlinenoexcept

Definition at line 115 of file fastx_pipeline_state.cuh.

115 {
116 return record_positive_kmers_scratch_;
117 }

◆ record_positive_kmers_scratch() [2/2]

std::vector< uint64_t > & cusbf::detail::FastxPipelineState::record_positive_kmers_scratch ( )
inlinenoexcept

Definition at line 111 of file fastx_pipeline_state.cuh.

111 {
112 return record_positive_kmers_scratch_;
113 }

◆ release_all()

void cusbf::detail::FastxPipelineState::release_all ( )
inline

Definition at line 230 of file fastx_pipeline_state.cuh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ release_device_staging()

void cusbf::detail::FastxPipelineState::release_device_staging ( )
inline

Definition at line 219 of file fastx_pipeline_state.cuh.

219 {
220 thrust::device_vector<char>{}.swap(d_sequence_);
221 thrust::device_vector<uint64_t>{}.swap(d_dense_packed_words_);
222 for (thrust::device_vector<char>& buffer : d_sequence_pings_) {
223 thrust::device_vector<char>{}.swap(buffer);
224 }
225 thrust::device_vector<uint8_t>{}.swap(d_resultBuffer_);
226 thrust::device_vector<QueryLayoutRecord>{}.swap(d_query_layout_records_);
227 thrust::device_vector<uint64_t>{}.swap(d_record_positive_kmers_);
228 }
Here is the caller graph for this function:

◆ release_host_pings()

void cusbf::detail::FastxPipelineState::release_host_pings ( )
inline

Definition at line 203 of file fastx_pipeline_state.cuh.

203 {
204 for (FastxPinnedSequenceBuffer& sequence : normalized_sequence_pings_) {
205 sequence.release();
206 }
207 for (std::vector<NormalizedRecord>& records : normalized_records_pings_) {
208 std::vector<NormalizedRecord>{}.swap(records);
209 }
210 }
Here is the caller graph for this function:

◆ release_host_scratch()

void cusbf::detail::FastxPipelineState::release_host_scratch ( )
inline

Definition at line 212 of file fastx_pipeline_state.cuh.

212 {
213 std::string{}.swap(normalized_sequence_scratch_);
214 std::vector<NormalizedRecord>{}.swap(normalized_records_scratch_);
215 std::vector<uint64_t>{}.swap(record_positive_kmers_scratch_);
216 std::vector<uint8_t>{}.swap(result_hits_scratch_);
217 }
Here is the caller graph for this function:

◆ result_buffer_device() [1/2]

const thrust::device_vector< uint8_t > & cusbf::detail::FastxPipelineState::result_buffer_device ( ) const
inlinenoexcept

Definition at line 53 of file fastx_pipeline_state.cuh.

53 {
54 return d_resultBuffer_;
55 }

◆ result_buffer_device() [2/2]

thrust::device_vector< uint8_t > & cusbf::detail::FastxPipelineState::result_buffer_device ( )
inlinenoexcept

Definition at line 49 of file fastx_pipeline_state.cuh.

49 {
50 return d_resultBuffer_;
51 }

◆ result_hits_scratch() [1/2]

const std::vector< uint8_t > & cusbf::detail::FastxPipelineState::result_hits_scratch ( ) const
inlinenoexcept

Definition at line 123 of file fastx_pipeline_state.cuh.

123 {
124 return result_hits_scratch_;
125 }

◆ result_hits_scratch() [2/2]

std::vector< uint8_t > & cusbf::detail::FastxPipelineState::result_hits_scratch ( )
inlinenoexcept

Definition at line 119 of file fastx_pipeline_state.cuh.

119 {
120 return result_hits_scratch_;
121 }

◆ sequence_device() [1/2]

const thrust::device_vector< char > & cusbf::detail::FastxPipelineState::sequence_device ( ) const
inlinenoexcept

Definition at line 36 of file fastx_pipeline_state.cuh.

36 {
37 return d_sequence_;
38 }

◆ sequence_device() [2/2]

thrust::device_vector< char > & cusbf::detail::FastxPipelineState::sequence_device ( )
inlinenoexcept

Definition at line 32 of file fastx_pipeline_state.cuh.

32 {
33 return d_sequence_;
34 }

◆ shrink_all()

void cusbf::detail::FastxPipelineState::shrink_all ( )
inline

Definition at line 244 of file fastx_pipeline_state.cuh.

Here is the call graph for this function:

◆ shrink_device_staging()

void cusbf::detail::FastxPipelineState::shrink_device_staging ( )
inline

Definition at line 240 of file fastx_pipeline_state.cuh.

240 {
242 }
Here is the call graph for this function:

◆ shrink_host_scratch()

void cusbf::detail::FastxPipelineState::shrink_host_scratch ( )
inline

Definition at line 236 of file fastx_pipeline_state.cuh.

236 {
238 }
Here is the call graph for this function:

◆ stage_dense_packed()

Result< void > cusbf::detail::FastxPipelineState::stage_dense_packed ( std::span< const uint64_t words,
cuda::stream_ref  stream 
)
inline

Definition at line 167 of file fastx_pipeline_state.cuh.

167 {
168 ensure_dense_packed_capacity(words.size());
170 thrust::raw_pointer_cast(d_dense_packed_words_.data()),
171 words.data(),
172 words.size_bytes(),
174 stream.get()
175 ));
176 return {};
177 }
#define CUSBF_CUDA_TRY(expr)
Propagates a CUDA error wrapped in cusbf::Result<void>.
Definition error.hpp:269
Here is the call graph for this function:
Here is the caller graph for this function:

◆ stage_sequence()

Result< void > cusbf::detail::FastxPipelineState::stage_sequence ( std::span< const char sequence,
cuda::stream_ref  stream 
)
inline

Definition at line 146 of file fastx_pipeline_state.cuh.

146 {
147 ensure_sequence_capacity(sequence.size());
149 thrust::raw_pointer_cast(d_sequence_.data()),
150 sequence.data(),
151 sequence.size_bytes(),
153 stream.get()
154 ));
155 return {};
156 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ stage_sequence_ping()

Result< device_span< const char > > cusbf::detail::FastxPipelineState::stage_sequence_ping ( size_t  ping,
std::string_view  sequence,
cuda::stream_ref  stream 
)
inline

Definition at line 188 of file fastx_pipeline_state.cuh.

188 {
189 auto& buffer = d_sequence_pings_[ping & 1U];
190 if (sequence.size() > buffer.size()) {
191 buffer.resize(sequence.size());
192 }
194 thrust::raw_pointer_cast(buffer.data()),
195 sequence.data(),
196 sequence.size(),
198 stream.get()
199 ));
200 return device_span<const char>{thrust::raw_pointer_cast(buffer.data()), sequence.size()};
201 }
Here is the call graph for this function:

◆ staged_dense_packed_view()

Result< device_span< const uint64_t > > cusbf::detail::FastxPipelineState::staged_dense_packed_view ( std::span< const uint64_t words,
cuda::stream_ref  stream 
)
inline

Definition at line 180 of file fastx_pipeline_state.cuh.

180 {
182 return device_span<const uint64_t>{
183 thrust::raw_pointer_cast(d_dense_packed_words_.data()), words.size()
184 };
185 }
Result< void > stage_dense_packed(std::span< const uint64_t > words, cuda::stream_ref stream)
#define CUSBF_TRY(expr)
Propagates a cusbf::Result failure from the enclosing function (GNU statement expression).
Definition error.hpp:246
Here is the call graph for this function:

◆ staged_sequence_view()

Result< device_span< const char > > cusbf::detail::FastxPipelineState::staged_sequence_view ( std::span< const char sequence,
cuda::stream_ref  stream 
)
inline

Definition at line 159 of file fastx_pipeline_state.cuh.

159 {
160 CUSBF_TRY(stage_sequence(sequence, stream));
161 return device_span<const char>{
162 thrust::raw_pointer_cast(d_sequence_.data()), sequence.size()
163 };
164 }
Result< void > stage_sequence(std::span< const char > sequence, cuda::stream_ref stream)
Here is the call graph for this function:

The documentation for this class was generated from the following file: