Commit 3fef5068 authored by Nikhila Ravi's avatar Nikhila Ravi Committed by Facebook GitHub Bot
Browse files

Make cuda tensors contiguous in host function and remove contiguous check

Summary:
Update the cuda kernels to:
- remove contiguous checks for the grad tensors and for cpu functions which use accessors
- for cuda implementations call `.contiguous()` on all tensors in the host function before invoking the kernel

Reviewed By: gkioxari

Differential Revision: D21598008

fbshipit-source-id: 9b97bda4582fd4269c8a00999874d4552a1aea2d
parent a8377f1f
...@@ -67,9 +67,9 @@ std::tuple<torch::Tensor, torch::Tensor, torch::Tensor> RasterizePointsNaive( ...@@ -67,9 +67,9 @@ std::tuple<torch::Tensor, torch::Tensor, torch::Tensor> RasterizePointsNaive(
if (points.is_cuda() && cloud_to_packed_first_idx.is_cuda() && if (points.is_cuda() && cloud_to_packed_first_idx.is_cuda() &&
num_points_per_cloud.is_cuda()) { num_points_per_cloud.is_cuda()) {
#ifdef WITH_CUDA #ifdef WITH_CUDA
CHECK_CONTIGUOUS_CUDA(points); CHECK_CUDA(points);
CHECK_CONTIGUOUS_CUDA(cloud_to_packed_first_idx); CHECK_CUDA(cloud_to_packed_first_idx);
CHECK_CONTIGUOUS_CUDA(num_points_per_cloud); CHECK_CUDA(num_points_per_cloud);
return RasterizePointsNaiveCuda( return RasterizePointsNaiveCuda(
points, points,
cloud_to_packed_first_idx, cloud_to_packed_first_idx,
...@@ -144,9 +144,9 @@ torch::Tensor RasterizePointsCoarse( ...@@ -144,9 +144,9 @@ torch::Tensor RasterizePointsCoarse(
if (points.is_cuda() && cloud_to_packed_first_idx.is_cuda() && if (points.is_cuda() && cloud_to_packed_first_idx.is_cuda() &&
num_points_per_cloud.is_cuda()) { num_points_per_cloud.is_cuda()) {
#ifdef WITH_CUDA #ifdef WITH_CUDA
CHECK_CONTIGUOUS_CUDA(points); CHECK_CUDA(points);
CHECK_CONTIGUOUS_CUDA(cloud_to_packed_first_idx); CHECK_CUDA(cloud_to_packed_first_idx);
CHECK_CONTIGUOUS_CUDA(num_points_per_cloud); CHECK_CUDA(num_points_per_cloud);
return RasterizePointsCoarseCuda( return RasterizePointsCoarseCuda(
points, points,
cloud_to_packed_first_idx, cloud_to_packed_first_idx,
...@@ -215,8 +215,8 @@ std::tuple<torch::Tensor, torch::Tensor, torch::Tensor> RasterizePointsFine( ...@@ -215,8 +215,8 @@ std::tuple<torch::Tensor, torch::Tensor, torch::Tensor> RasterizePointsFine(
const int points_per_pixel) { const int points_per_pixel) {
if (points.is_cuda()) { if (points.is_cuda()) {
#ifdef WITH_CUDA #ifdef WITH_CUDA
CHECK_CONTIGUOUS_CUDA(points); CHECK_CUDA(points);
CHECK_CONTIGUOUS_CUDA(bin_points); CHECK_CUDA(bin_points);
return RasterizePointsFineCuda( return RasterizePointsFineCuda(
points, bin_points, image_size, radius, bin_size, points_per_pixel); points, bin_points, image_size, radius, bin_size, points_per_pixel);
#else #else
...@@ -266,10 +266,10 @@ torch::Tensor RasterizePointsBackward( ...@@ -266,10 +266,10 @@ torch::Tensor RasterizePointsBackward(
const torch::Tensor& grad_dists) { const torch::Tensor& grad_dists) {
if (points.is_cuda()) { if (points.is_cuda()) {
#ifdef WITH_CUDA #ifdef WITH_CUDA
CHECK_CONTIGUOUS_CUDA(points); CHECK_CUDA(points);
CHECK_CONTIGUOUS_CUDA(idxs); CHECK_CUDA(idxs);
CHECK_CONTIGUOUS_CUDA(grad_zbuf); CHECK_CUDA(grad_zbuf);
CHECK_CONTIGUOUS_CUDA(grad_dists); CHECK_CUDA(grad_dists);
return RasterizePointsBackwardCuda(points, idxs, grad_zbuf, grad_dists); return RasterizePointsBackwardCuda(points, idxs, grad_zbuf, grad_dists);
#else #else
AT_ERROR("Not compiled with GPU support"); AT_ERROR("Not compiled with GPU support");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment