MCPcopy Create free account
hub / github.com/FeiYull/TensorRT-Alpha / copy

Method copy

utils/yolo.cpp:133–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

131 }
132}
133void yolo::YOLO::copy(const std::vector<cv::Mat>& imgsBatch)
134{
135#if 0
136 cv::Mat img_fp32 = cv::Mat::zeros(imgsBatch[0].size(), CV_32FC3); // todo
137 cudaHostRegister(img_fp32.data, img_fp32.elemSize() * img_fp32.total(), cudaHostRegisterPortable);
138 float* pi = m_input_src_device;
139 for (size_t i = 0; i < imgsBatch.size(); i++)
140 {
141 imgsBatch[i].convertTo(img_fp32, CV_32FC3);
142 CHECK(cudaMemcpy(pi, img_fp32.data, sizeof(float) * 3 * m_param.src_h * m_param.src_w, cudaMemcpyHostToDevice));
143 pi += 3 * m_param.src_h * m_param.src_w;
144 }
145 cudaHostUnregister(img_fp32.data);
146#endif
147
148#if 0 // for Nvidia TX2
149 cv::Mat img_fp32 = cv::Mat::zeros(imgsBatch[0].size(), CV_32FC3); // todo
150 float* pi = m_input_src_device;
151 for (size_t i = 0; i < imgsBatch.size(); i++)
152 {
153 std::vector<float> img_vec = std::vector<float>(imgsBatch[i].reshape(1, 1));
154 imgsBatch[i].convertTo(img_fp32, CV_32FC3);
155 CHECK(cudaMemcpy(pi, img_fp32.data, sizeof(float) * 3 * m_param.src_h * m_param.src_w, cudaMemcpyHostToDevice));
156 pi += 3 * m_param.src_h * m_param.src_w;
157 }
158#endif
159
160 // update 20230302, faster.
161 // 1. move uint8_to_float in cuda kernel function. For 8*3*1920*1080, cost time 15ms -> 3.9ms
162 // 2. Todo
163 unsigned char* pi = m_input_src_device;
164 for (size_t i = 0; i < imgsBatch.size(); i++)
165 {
166 CHECK(cudaMemcpy(pi, imgsBatch[i].data, sizeof(unsigned char) * 3 * m_param.src_h * m_param.src_w, cudaMemcpyHostToDevice));
167 pi += 3 * m_param.src_h * m_param.src_w;
168 }
169
170#if 0 // cuda stream
171 cudaStream_t streams[32];
172 for (int i = 0; i < imgsBatch.size(); i++)
173 {
174 CHECK(cudaStreamCreate(&streams[i]));
175 }
176 unsigned char* pi = m_input_src_device;
177 for (size_t i = 0; i < imgsBatch.size(); i++)
178 {
179 CHECK(cudaMemcpyAsync(pi, imgsBatch[i].data, sizeof(unsigned char) * 3 * m_param.src_h * m_param.src_w, cudaMemcpyHostToDevice, streams[i]));
180 pi += 3 * m_param.src_h * m_param.src_w;
181 }
182 CHECK(cudaDeviceSynchronize());
183#endif
184}
185
186void yolo::YOLO::preprocess(const std::vector<cv::Mat>& imgsBatch)
187{

Callers 13

taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45
taskFunction · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected