Change:
Pytorch 0.4.0 gives a segmentation fault with dilated 2D convolutions over a specific size. import torch import as nn model = nn.Conv2d(inchannels=64, outchannels=64, kernelsize=5, dilation=2) model(([1, 64, 1166, 1166])) # This runs model(([1, 64, 1167, 1167])) # This crashes PyTorch version: 0.4.0 Is debug build: No CUDA used to build PyTorch: 9.1.85 OS: CentOS Linux 7 (Core) GCC version: (GCC) 4.8.5 (Red Hat 4.8.5-28) CMake version: version 2.8.12.2 Python version: 3.6 Is CUDA available: Yes CUDA runtime version: 8.0.61 GPU models and configuration: GPU 0: GeForce GTX 1080 Ti GPU 1: TITAN X (Pascal) GPU 2: Quadro K2200 Nvidia driver version: 390.59 cuDNN version: Probably one of the following: /usr/local/cuda- /usr/local/cuda- /usr/local/cuda-7.5/lib64/libcudnnstatic.a /usr/local/cuda- /usr/local/cuda-8.0/lib64/libcudnn_static.a
do you think this is the same as the segfault you showed me a week ago on convolution?
ah yes. int overflow. I only fixed conv3d because I didn’t want to hurt perf. I’ll fix all of them.

Discussion:
AT_PRIVATE_CASE_TYPE(at::ScalarType::Long, int64_t, __VA_ARGS__)         AT_PRIVATE_CASE_TYPE(at::ScalarType::Short, int16_t, __VA_ARGS__)        default:                                                                 <del> AT_ERROR("%s not implemented for '%s'", (NAME), the_type.toString());  </del> <ins> AT_ERROR(#NAME, " not implemented for '", the_type.toString(), "'");  </ins> }                                                                          }()

.. autofunction:: linear <ins> :hidden:`bilinear` ~~~~~~~~~~~~~~~~ .. autofunction:: bilinear </ins> Dropout functions -----------------

.. automethod:: rsqrt .. automethod:: rsqrt_ .. automethod:: scatter_ <ins> .. automethod:: scatter_add_ </ins> .. automethod:: select .. automethod:: set_ .. automethod:: share_memory_

Other Operations ~~~~~~~~~~~~~~~~~~~~~~ <ins> .. autofunction:: bincount </ins> .. autofunction:: cross .. autofunction:: diag .. autofunction:: diagflat

.. autofunction:: einsum .. autofunction:: flip .. autofunction:: histc <ins> .. autofunction:: meshgrid </ins> .. autofunction:: renorm .. autofunction:: trace .. autofunction:: tril

Writes all values from the tensor :attr:`src` into :attr:`self` at the indices specified in the :attr:`index` tensor. For each value in :attr:`src`, its output <del> index is specified by its index in :attr:`src` for dimension != :attr:`dim` and by the corresponding value in :attr:`index` for dimension = :attr:`dim`. </del> <ins> index is specified by its index in :attr:`src` for ``dimension != dim`` and by the corresponding value in :attr:`index` for ``dimension = dim``. </ins> For a 3-D tensor, :attr:`self` is updated as::

This is the reverse operation of the manner described in :meth:`~Tensor.gather`. <del> :attr:`self`, :attr:`index` and :attr:`src` should have same number of dimensions. It is also required that `index.size(d) <= src.size(d)` for all dimensions `d`, and that `index.size(d) <= self.size(d)` for all dimensions `d != dim`. </del> <ins> :attr:`self`, :attr:`index` and :attr:`src` (if it is a Tensor) should have same number of dimensions. It is also required that ``index.size(d) <= src.size(d)`` for all dimensions ``d``, and that ``index.size(d) <= self.size(d)`` for all dimensions ``d != dim``. </ins> Moreover, as for :meth:`~Tensor.gather`, the values of :attr:`index` must be <del> between `0` and `(self.size(dim) -1)` inclusive, and all values in a row along the specified dimension :attr:`dim` must be unique. </del> <ins> between ``0`` and ``self.size(dim) - 1`` inclusive, and all values in a row along the specified dimension :attr:`dim` must be unique. </ins> Args: dim (int): the axis along which to index

[ 0.0000,  0.0000,  0.0000,  1.2300]]) """) <ins> add_docstr_all('scatter_add_', r""" scatter_add_(dim, index, other) -> Tensor Adds all values from the tensor :attr:`other` into :attr:`self` at the indices specified in the :attr:`index` tensor in a similar fashion as :meth:`~torch.Tensor.scatter_`. For each value in :attr:`other`, it is added to an index in :attr:`self` which is specified by its index in :attr:`other` for ``dimension != dim`` and by the corresponding value in :attr:`index` for ``dimension = dim``. For a 3-D tensor, :attr:`self` is updated as:: self[index[i][j][k]][j][k] += other[i][j][k]  # if dim == 0 self[i][index[i][j][k]][k] += other[i][j][k]  # if dim == 1 self[i][j][index[i][j][k]] += other[i][j][k]  # if dim == 2 :attr:`self`, :attr:`index` and :attr:`other` should have same number of dimensions. It is also required that ``index.size(d) <= other.size(d)`` for all dimensions ``d``, and that ``index.size(d) <= self.size(d)`` for all dimensions ``d != dim``. Moreover, as for :meth:`~Tensor.gather`, the values of :attr:`index` must be between ``0`` and ``self.size(dim) - 1`` inclusive, and all values in a row along the specified dimension :attr:`dim` must be unique. Args: dim (int): the axis along which to index index (LongTensor): the indices of elements to scatter and add other (Tensor): the source elements to scatter and add Example:: >>> x = torch.rand(2, 5) >>> x tensor([[0.7404, 0.0427, 0.6480, 0.3806, 0.8328], [0.7953, 0.2009, 0.9154, 0.6782, 0.9620]]) >>> torch.ones(3, 5).scatter_add_(0, torch.tensor([[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]]), x) tensor([[1.7404, 1.2009, 1.9154, 1.3806, 1.8328], [1.0000, 1.0427, 1.0000, 1.6782, 1.0000], [1.7953, 1.0000, 1.6480, 1.0000, 1.9620]]) """) </ins> add_docstr_all('select', r""" select(dim, index) -> Tensor

:math:`p_n > 1` increases the recall, :math:`p_n < 1` increases the precision. For example, if a dataset contains 100 positive and 300 negative examples of a single class, <del> then `pos_weight` for the class should be equal to math:`frac{300}{100}=3`. </del> <ins> then `pos_weight` for the class should be equal to :math:`frac{300}{100}=3`. </ins> The loss would act as if the dataset contains math:`3times 100=300` positive examples. Args:

self.ceil_mode = ceil_mode def extra_repr(self): <del> return 'norm_type={norm_type}, kernel_size{kernel_size}, stride={stride}, '  </del> <ins> return 'norm_type={norm_type}, kernel_size={kernel_size}, stride={stride}, '  </ins> 'ceil_mode={ceil_mode}'.format(**self.__dict__)