MCPcopy Create free account
hub / github.com/NVIDIA/nvcomp / BatchData

Method BatchData

examples/BatchData.h:44–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42{
43public:
44 BatchData(
45 const std::vector<std::vector<char>>& host_data,
46 const size_t chunk_size) :
47 m_ptrs(),
48 m_sizes(),
49 m_data(),
50 m_size(0)
51 {
52 m_size = compute_batch_size(host_data, chunk_size);
53
54 m_data = nvcomp::thrust::device_vector<uint8_t>(chunk_size * size());
55
56 std::vector<void*> uncompressed_ptrs(size());
57 for (size_t i = 0; i < size(); ++i) {
58 uncompressed_ptrs[i] = static_cast<void*>(data() + chunk_size * i);
59 }
60
61 m_ptrs = nvcomp::thrust::device_vector<void*>(uncompressed_ptrs);
62 std::vector<size_t> sizes
63 = compute_chunk_sizes(host_data, size(), chunk_size);
64 m_sizes = nvcomp::thrust::device_vector<size_t>(sizes);
65
66 // copy data to GPU
67 size_t offset = 0;
68 for (size_t i = 0; i < host_data.size(); ++i) {
69 CUDA_CHECK(cudaMemcpy(
70 uncompressed_ptrs[offset],
71 host_data[i].data(),
72 host_data[i].size(),
73 cudaMemcpyHostToDevice));
74
75 const size_t num_chunks
76 = (host_data[i].size() + chunk_size - 1) / chunk_size;
77 offset += num_chunks;
78 }
79 }
80
81 BatchData(const BatchDataCPU& batch_data, bool copy_data = false) :
82 m_ptrs(),

Callers

nothing calls this directly

Calls 6

compute_batch_sizeFunction · 0.85
compute_chunk_sizesFunction · 0.85
sizeMethod · 0.45
dataMethod · 0.45
sizesMethod · 0.45
ptrsMethod · 0.45

Tested by

no test coverage detected