alexandrosstergiou / SoftPool

[ICCV 2021] Code for approximated exponential maximum pooling

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

error: macro "AT_ASSERT" passed 2 arguments, but takes just 1

sherlockedlee opened this issue · comments

The project could not compile successfully with cuda-9.0, what should I do to change the code cuda/softpool_cuda.h?

#define CHECK_CUDA(x) AT_ASSERT(x.is_cuda(), #x " must be a CUDA tensor") #define CHECK_CONTIGUOUS(x) AT_ASSERT(x.is_contiguous(), #x " must be a contiguous tensor");

I already tried TORCH_INTERNAL_ASSERT, it did not work. Thanks alot.

The log is as follows:

cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ CUDA/softpool_cuda.cpp:53:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp:53:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:54:23: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(output); ^ CUDA/softpool_cuda.cpp:54:23: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:73:28: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(output_grad); ^ CUDA/softpool_cuda.cpp:73:28: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:74:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp:74:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:75:27: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input_grad); ^ CUDA/softpool_cuda.cpp:75:27: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:95:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp:95:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:96:23: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(output); ^ CUDA/softpool_cuda.cpp:96:23: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:119:28: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(output_grad); ^ CUDA/softpool_cuda.cpp:119:28: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:120:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp:120:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:121:27: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input_grad); ^ CUDA/softpool_cuda.cpp:121:27: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:146:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp:146:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:147:23: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(output); ^ CUDA/softpool_cuda.cpp:147:23: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:175:28: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(output_grad); ^ CUDA/softpool_cuda.cpp:175:28: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:176:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp:176:22: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp:177:27: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CHECK_INPUT(input_grad); ^ CUDA/softpool_cuda.cpp:177:27: error: macro "AT_ASSERT" passed 2 arguments, but takes just 1 CUDA/softpool_cuda.cpp: In function ‘int softpool1d_forward_cuda(at::Tensor, std::tuple<int>, std::tuple<int>, at::Tensor)’: CUDA/softpool_cuda.cpp:47:23: error: ‘AT_ASSERT’ was not declared in this scope #define CHECK_CUDA(x) AT_ASSERT(x.is_cuda(), #x " must be a CUDA tensor") ^ CUDA/softpool_cuda.cpp:49:24: note: in expansion of macro ‘CHECK_CUDA’ #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x); ^ CUDA/softpool_cuda.cpp:53:5: note: in expansion of macro ‘CHECK_INPUT’ CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp: In function ‘int softpool1d_backward_cuda(at::Tensor, at::Tensor, std::tuple<int>, std::tuple<int>, at::Tensor)’: CUDA/softpool_cuda.cpp:47:23: error: ‘AT_ASSERT’ was not declared in this scope #define CHECK_CUDA(x) AT_ASSERT(x.is_cuda(), #x " must be a CUDA tensor") ^ CUDA/softpool_cuda.cpp:49:24: note: in expansion of macro ‘CHECK_CUDA’ #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x); ^ CUDA/softpool_cuda.cpp:73:5: note: in expansion of macro ‘CHECK_INPUT’ CHECK_INPUT(output_grad); ^ CUDA/softpool_cuda.cpp: In function ‘int softpool2d_forward_cuda(at::Tensor, std::tuple<int, int>, std::tuple<int, int>, at::Tensor)’: CUDA/softpool_cuda.cpp:47:23: error: ‘AT_ASSERT’ was not declared in this scope #define CHECK_CUDA(x) AT_ASSERT(x.is_cuda(), #x " must be a CUDA tensor") ^ CUDA/softpool_cuda.cpp:49:24: note: in expansion of macro ‘CHECK_CUDA’ #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x); ^ CUDA/softpool_cuda.cpp:95:5: note: in expansion of macro ‘CHECK_INPUT’ CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp: In function ‘int softpool2d_backward_cuda(at::Tensor, at::Tensor, std::tuple<int, int>, std::tuple<int, int>, at::Tensor)’: CUDA/softpool_cuda.cpp:47:23: error: ‘AT_ASSERT’ was not declared in this scope #define CHECK_CUDA(x) AT_ASSERT(x.is_cuda(), #x " must be a CUDA tensor") ^ CUDA/softpool_cuda.cpp:49:24: note: in expansion of macro ‘CHECK_CUDA’ #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x); ^ CUDA/softpool_cuda.cpp:119:5: note: in expansion of macro ‘CHECK_INPUT’ CHECK_INPUT(output_grad); ^ CUDA/softpool_cuda.cpp: In function ‘int softpool3d_forward_cuda(at::Tensor, std::tuple<int, int, int>, std::tuple<int, int, int>, at::Tensor)’: CUDA/softpool_cuda.cpp:47:23: error: ‘AT_ASSERT’ was not declared in this scope #define CHECK_CUDA(x) AT_ASSERT(x.is_cuda(), #x " must be a CUDA tensor") ^ CUDA/softpool_cuda.cpp:49:24: note: in expansion of macro ‘CHECK_CUDA’ #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x); ^ CUDA/softpool_cuda.cpp:146:5: note: in expansion of macro ‘CHECK_INPUT’ CHECK_INPUT(input); ^ CUDA/softpool_cuda.cpp: In function ‘int softpool3d_backward_cuda(at::Tensor, at::Tensor, std::tuple<int, int, int>, std::tuple<int, int, int>, at::Tensor)’: CUDA/softpool_cuda.cpp:47:23: error: ‘AT_ASSERT’ was not declared in this scope #define CHECK_CUDA(x) AT_ASSERT(x.is_cuda(), #x " must be a CUDA tensor") ^ CUDA/softpool_cuda.cpp:49:24: note: in expansion of macro ‘CHECK_CUDA’ #define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x); ^ CUDA/softpool_cuda.cpp:175:5: note: in expansion of macro ‘CHECK_INPUT’ CHECK_INPUT(output_grad); ^ error: command 'gcc' failed with exit status 1 Makefile:2: recipe for target 'install' failed make: *** [install] Error 1

Hi @sherlockedlee,

I have not tested the code with CUDA 9.0, but from the errors that I see this related to different ATen definitions for that version (and the corresponding PyTorch version) to the current ones. This is a bit of a problem in general for packages that extend PyTorch and their compatibility with future or previous versions.

I would simply suggest creating an additional environment with current CUDA/cuDNN/PyTorch versions to avoid any further hassles.

Best,
Alex