Skip to content

Commit 96fcffe

Browse files
authored
Merge pull request #21 from bddppq/contiguous-inputs
Make sure torch inputs contiguous before passing data pointer to TRT
2 parents 8300d7c + 1333319 commit 96fcffe

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

core/execution/register_trt_op.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@ namespace execution {
1111

1212
std::vector<at::Tensor> RunCudaEngine(nvinfer1::IExecutionContext* ctx, std::pair<uint64_t, uint64_t> io, std::vector<at::Tensor>& inputs) {
1313
std::vector<void*> gpu_handles;
14+
15+
std::vector<at::Tensor> contig_inputs{};
16+
contig_inputs.reserve(inputs.size());
1417
for (size_t i = 0; i < inputs.size(); i++) {
15-
auto in_gpu = inputs[i].to(at::kCUDA);
16-
auto shape = core::util::toDimsPad(in_gpu.sizes(), 4);
17-
//in_gpu = inputs[i].reshape(core::util::toVec(shape));
18-
//LOG_DEBUG("In shape:" << in_gpu.sizes() );
19-
ctx->setBindingDimensions(i, shape);
20-
gpu_handles.push_back(in_gpu.data_ptr());
18+
auto dims = core::util::toDimsPad(inputs[i].sizes(), 1);
19+
auto shape = core::util::toVec(dims);
20+
contig_inputs.push_back(inputs[i].to(at::kCUDA).view(shape).contiguous());
21+
LOG_DEBUG("In shape:" << shape);
22+
ctx->setBindingDimensions(i, dims);
23+
gpu_handles.push_back(contig_inputs.back().data_ptr());
2124
}
2225

2326
TRTORCH_CHECK(ctx->allInputDimensionsSpecified(), "Not enough inputs provided (execution.RunCudaEngine)");

tests/util/run_graph_engine.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@ std::vector<at::Tensor> RunEngine(std::string& eng, std::vector<at::Tensor> inpu
2424
auto ctx = engine->createExecutionContext();
2525

2626
std::vector<void*> gpu_handles;
27+
28+
std::vector<at::Tensor> contig_inputs{};
29+
contig_inputs.reserve(inputs.size());
2730
for (size_t i = 0; i < inputs.size(); i++) {
28-
auto in_gpu = inputs[i].to(at::kCUDA);
29-
auto shape = core::util::toDimsPad(in_gpu.sizes(), 1);
30-
in_gpu = inputs[i].reshape(core::util::toVec(shape));
31-
LOG_DEBUG("In shape:" << in_gpu.sizes() );
32-
ctx->setBindingDimensions(i, shape);
33-
gpu_handles.push_back(in_gpu.data_ptr());
31+
auto dims = core::util::toDimsPad(inputs[i].sizes(), 1);
32+
auto shape = core::util::toVec(dims);
33+
contig_inputs.push_back(inputs[i].to(at::kCUDA).view(shape).contiguous());
34+
LOG_DEBUG("In shape:" << shape);
35+
ctx->setBindingDimensions(i, dims);
36+
gpu_handles.push_back(contig_inputs.back().data_ptr());
3437
}
3538

3639
if (!ctx->allInputDimensionsSpecified()) {

0 commit comments

Comments
 (0)