From 59fbb5c100b67da923f73d998eb7dad37df44e43 Mon Sep 17 00:00:00 2001 From: simon wu <wswday@sina.com> Date: Sat, 13 Jul 2019 22:54:49 +0800 Subject: [PATCH] Fixing build-errors on Windows (#969) * Fixing build-errors on Windows (add some compile args, which are default on Linux) * Fixing build-errors on Windows * minor formatting * Fixing errors on windows 1.Adding 'cxx' key for extra_compile_args 2.Adding type-cast to long for first parameter of THCCeilDiv facebookresearch/maskrcnn-benchmark#409 3.Ignoring resource setting on windows * update the order of import statements --- mmdet/datasets/loader/build_loader.py | 10 +++++---- .../src/sigmoid_focal_loss_cuda.cu | 4 ++-- setup.py | 21 +++++++++++++++---- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/mmdet/datasets/loader/build_loader.py b/mmdet/datasets/loader/build_loader.py index 8759b061..18437137 100644 --- a/mmdet/datasets/loader/build_loader.py +++ b/mmdet/datasets/loader/build_loader.py @@ -1,3 +1,4 @@ +import platform from functools import partial from mmcv.runner import get_dist_info @@ -6,10 +7,11 @@ from torch.utils.data import DataLoader from .sampler import GroupSampler, DistributedGroupSampler, DistributedSampler -# https://github.com/pytorch/pytorch/issues/973 -import resource -rlimit = resource.getrlimit(resource.RLIMIT_NOFILE) -resource.setrlimit(resource.RLIMIT_NOFILE, (4096, rlimit[1])) +if platform.system() != 'Windows': + # https://github.com/pytorch/pytorch/issues/973 + import resource + rlimit = resource.getrlimit(resource.RLIMIT_NOFILE) + resource.setrlimit(resource.RLIMIT_NOFILE, (4096, rlimit[1])) def build_dataloader(dataset, diff --git a/mmdet/ops/sigmoid_focal_loss/src/sigmoid_focal_loss_cuda.cu b/mmdet/ops/sigmoid_focal_loss/src/sigmoid_focal_loss_cuda.cu index aa1e4b9d..7b9b8050 100644 --- a/mmdet/ops/sigmoid_focal_loss/src/sigmoid_focal_loss_cuda.cu +++ b/mmdet/ops/sigmoid_focal_loss/src/sigmoid_focal_loss_cuda.cu @@ -109,7 +109,7 @@ at::Tensor SigmoidFocalLoss_forward_cuda(const at::Tensor &logits, auto losses = at::empty({num_samples, logits.size(1)}, logits.options()); auto losses_size = num_samples * logits.size(1); - dim3 grid(std::min(THCCeilDiv(losses_size, 512L), 4096L)); + dim3 grid(std::min(THCCeilDiv((long)losses_size, 512L), 4096L)); dim3 block(512); if (losses.numel() == 0) { @@ -147,7 +147,7 @@ at::Tensor SigmoidFocalLoss_backward_cuda(const at::Tensor &logits, auto d_logits = at::zeros({num_samples, num_classes}, logits.options()); auto d_logits_size = num_samples * logits.size(1); - dim3 grid(std::min(THCCeilDiv(d_logits_size, 512L), 4096L)); + dim3 grid(std::min(THCCeilDiv((long)d_logits_size, 512L), 4096L)); dim3 block(512); if (d_logits.numel() == 0) { diff --git a/setup.py b/setup.py index e40909a1..c0920d9b 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ import os +import platform import subprocess import time from setuptools import Extension, find_packages, setup @@ -88,18 +89,30 @@ def make_cuda_ext(name, module, sources): return CUDAExtension( name='{}.{}'.format(module, name), - sources=[os.path.join(*module.split('.'), p) for p in sources]) + sources=[os.path.join(*module.split('.'), p) for p in sources], + extra_compile_args={ + 'cxx': [], + 'nvcc': [ + '-D__CUDA_NO_HALF_OPERATORS__', + '-D__CUDA_NO_HALF_CONVERSIONS__', + '-D__CUDA_NO_HALF2_OPERATORS__', + ] + }) def make_cython_ext(name, module, sources): + extra_compile_args = None + if platform.system() != 'Windows': + extra_compile_args = { + 'cxx': ['-Wno-unused-function', '-Wno-write-strings'] + } + extension = Extension( '{}.{}'.format(module, name), [os.path.join(*module.split('.'), p) for p in sources], include_dirs=[np.get_include()], language='c++', - extra_compile_args={ - 'cxx': ['-Wno-unused-function', '-Wno-write-strings'] - }) + extra_compile_args=extra_compile_args) extension, = cythonize(extension) return extension -- GitLab