MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / KernelArgIterator

Class KernelArgIterator

tensorflow/stream_executor/kernel.h:278–332  ·  view source on GitHub ↗

An iterator for traversing all the arguments of a KernelArgsArray.

Source from the content-addressed store, hash-verified

276
277// An iterator for traversing all the arguments of a KernelArgsArray.
278class KernelArgIterator {
279 public:
280 KernelArgIterator(int number_of_argument_addresses,
281 int number_of_shared_memory_arguments,
282 const void *const *arg_addresses_data,
283 const size_t *arg_sizes_data,
284 const size_t *shmem_bytes_data,
285 const size_t *shmem_indices_data)
286 : arg_index_(0),
287 number_of_arguments_(number_of_argument_addresses +
288 number_of_shared_memory_arguments),
289 arg_address_iter_(arg_addresses_data),
290 arg_size_iter_(arg_sizes_data),
291 shmem_bytes_iter_(shmem_bytes_data),
292 shmem_indices_iter_(shmem_indices_data),
293 shmem_indices_end_(shmem_indices_data +
294 number_of_shared_memory_arguments) {}
295
296 // Returns true if another argument is present in the iterator.
297 bool has_next() { return arg_index_ < number_of_arguments_; }
298
299 // Returns the next argument in the iterator.
300 //
301 // Returns a default-constructed KernelArg if there is no next argument.
302 KernelArg next() {
303 KernelArg result = {};
304 if (!has_next()) {
305 return result;
306 } else if ((shmem_indices_iter_ != shmem_indices_end_) &&
307 (arg_index_ == *shmem_indices_iter_)) {
308 result.is_shared = true;
309 result.address = nullptr;
310 result.size = *shmem_bytes_iter_;
311 ++shmem_indices_iter_;
312 ++shmem_bytes_iter_;
313 } else {
314 result.is_shared = false;
315 result.address = *arg_address_iter_;
316 result.size = *arg_size_iter_;
317 ++arg_address_iter_;
318 ++arg_size_iter_;
319 }
320 ++arg_index_;
321 return result;
322 }
323
324 private:
325 size_t arg_index_;
326 size_t number_of_arguments_;
327 const void *const *arg_address_iter_;
328 const size_t *arg_size_iter_;
329 const size_t *shmem_bytes_iter_;
330 const size_t *shmem_indices_iter_;
331 const size_t *const shmem_indices_end_;
332};
333
334// Base class for KernelArgsArray.
335//

Callers 1

arg_iteratorMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected