Question: from collections import defaultdict import torch <del> try: FileNotFoundError except NameError: # py2.7 FileNotFoundError = IOError </del> <ins> from torch._six import FileNotFoundError </ins> class range(object):

Traceback (most recent call last): File "", line 322, in <moduleroislabel = fasterRCNN(imdata, iminfo, gtboxes, numboxes) File "/usr/local/lib/python2.7/dist-", line 491, in call result = self.forward(input, kwargs) File "/home/faster-", line 50, in forward rois, rpnlosscls, rpnlossbbox = self.RCNNrpn(basefeat, iminfo, gtboxes, numboxes) File "/usr/local/lib/python2.7/dist-", line 491, in call result = self.forward(input, kwargs) File "/home/faster-", line 87, in forward rpndata = self.RPNanchortarget((, gtboxes, iminfo, numboxes)) File "/usr/local/lib/python2.7/dist-", line 491, in call result = self.forward(input, kwargs) File "/home/faster-", line 157, in forward positiveweights = 1.0 / numexamples File "/usr/local/lib/python2.7/dist-", line 320, in rdiv return self.reciprocal() other RuntimeError: reciprocal is not implemented for type Exception NameError: "global name 'FileNotFoundError' is not defined" in <bound method of object at 0x7fb842e6e3d0ignored This error is coming while implementing pytorch faster-rcnn repository. Any solutions please??
can you use the issue template, we need more information to help you.
Using Pytorch 0.3.0 solves the problem.
are you using python 2? AFAIK FileNotFoundError only exists in python 3, so this should be fixed Also, this error is hiding the real bug in the code, which seems to be the following: Did you mean to take the reciprocal of a LongTensor?
does the shutdown workers FileNotFoundError happen on python 2.7 as well?
I haven't tested on py2. But I believe it should be an with errno.
Yup I am using Python 2. To overcome this error of FileNotFoundError I have downgraded Pytorch from 0.4.0 version to 0.3.0. Use Pytorch 0.3.0 with Python 2, it will work fine.
alternatively, upgrading to Python 3 will fix the issue (and Python 3 is nicer than Python 2).


Question: from collections import defaultdict import torch <del> try: FileNotFoundError except NameError: # py2.7 FileNotFoundError = IOError </del> <ins> from torch._six import FileNotFoundError </ins> class range(object):

We'll fix this though.
For a quick fix you can make python2 compatible by defining FileNotFoundError somewhere
This error still exist in pytorch 0.4
Yes it is fixed after 0.4
I am still getting it...
did you build pytorch from source? It was fixed after 0.4 is released, so it will be in the next pytorch release.
I updated it via
Can anyone help me with my problem?
I was also working with faster r-cnn and got the error. Downgrading to 0.3.0 solved FileNotFoundError but will produce another error: self.ratiolistbatch[leftidx:(rightidx+1)] = ((np.float64)) # trainset ratio list ,each batch is same number TypeError: 'module' object is not callable Where this error is related to in the above error message. Upgrading can solve this error but will produce the previous one. How do you cope with the second error?


Question: self.assertEqual(output.names, ['N', 'H', 'W', 'C']) self.assertEqual(output.shape, [3, 5, 1, 2]) <ins> @unittest.skip("Not implemented yet") </ins> def test_align_tensors_two_inputs(self): def _test(tensor_namedshape, align_names, expected_sizes, expected_error): tensor_names, tensor_sizes = tensor_namedshape

only supports fully named inputs; all input dimensions must have a name. When passing it an unnamed input, it errors out with the following message: It should really say "Found unnamed dim at index 0 of Tensor[None, None]".
fixed in


Question: self.assertEqual(output.names, ['N', 'H', 'W', 'C']) self.assertEqual(output.shape, [3, 5, 1, 2]) <ins> @unittest.skip("Not implemented yet") </ins> def test_align_tensors_two_inputs(self): def _test(tensor_namedshape, align_names, expected_sizes, expected_error): tensor_names, tensor_sizes = tensor_namedshape

This is an older implementation that I think doesn't make any sense anymore. We should throw a NYI exception for it. The expected behavior for this should be:
fixed in


Question: #define THC_GENERIC_FILE "generic/THCTensorIndex.cu" #else <ins> // Check tensor dimensions for index operations, and return the slice size. // src can be nullptr in case of indexFill: in that case it is ignored. static ptrdiff_t THCTensor_(getSliceSize)(THCState *state, THCTensor *dst, int dim, THCudaLongTensor *index, THCTensor *src) { int dstDims = THCTensor_(nDimension)(state, dst); int srcDims = (src == nullptr) ? dstDims : THCTensor_(nDimension)(state, src); THArgCheck(THCudaLongTensor_nDimension(state, index) == 1, 4, "expecting vector of indices"); THArgCheck(dim >= 0 && dim < dstDims, 2, "Indexing dim is out of bounds"); ptrdiff_t dstSliceSize = 1; for (int d = 0; d < dstDims; d++) { if (d != dim) { dstSliceSize *= dst->size[d]; } } if (src == nullptr) return dstSliceSize; THArgCheck(dim < srcDims, 3, "Indexing dim is out of bounds"); THArgCheck(THCudaLongTensor_nElement(state, index) == src->size[dim], 4, "length of src.size[dim] is not equal to length of indices"); ptrdiff_t srcSliceSize = 1; bool mismatch = false; if (dstDims != srcDims) mismatch = true; for (int d = 0; d < srcDims; d++) { if (d != dim) { srcSliceSize *= src->size[d]; if (!mismatch && dst->size[d] != src->size[d]) mismatch = true; } } THArgCheck(dstSliceSize == srcSliceSize, 2, "Source/destination tensor have different slice sizes (%ld vs %ld)", dstSliceSize, srcSliceSize); if (mismatch) { static bool warningShown = false; if (!warningShown) { warningShown = true; fprintf(stderr, "Warning: source/destination slices have same size but different " "shape for an index operation.  This behavior is deprecated.n"); } } return dstSliceSize; } </ins> void THCTensor_(indexCopy_long)(THCState *state, THCTensor *dst, int dim, THLongTensor *indices, THCTensor *src) { THCAssertSameGPU(THCTensor_(checkGPU)(state, 2, dst, src));

A = (5, 4) B = (0, 9).view(3, 3) C = (0, 15).view(3, 5) idxs = torch.LongTensor([0, 2, 4]) A.indexadd(0, idxs, B) # RuntimeError: inconsistent tensor size, expected r [4], t [4] and src [3] to have the same number of elements, but got 4, 4 and 3 elements respectively at (...)/aten/src/TH/generic/THTensorMath.c:1008 A.indexadd(0, idxs, C) # RuntimeError: inconsistent tensor size, expected r [4], t [4] and src [5] to have the same number of elements, but got 4, 4 and 5 elements respectively at (...)/aten/src/TH/generic/THTensorMath.c:1008 So far so good. But if we use CUDA... A = (5, 4).cuda() B = (0, 9).view(3, 3).cuda() C = (0, 15).view(3, 5).cuda() idxs = torch.LongTensor([0, 2, 4]).cuda() A.indexadd(0, idxs, B) print(A) # 0 1 2 0 # 0 0 0 0 # 3 4 5 0 # 0 0 0 0 # 6 7 8 0 # [ of size 5x4 (GPU 0)] OK, this looks wrong... A.zero() A.indexadd(0, idxs, C) print(A) # 0 1 2 3 # 4 0 0 0 # 5 6 7 8 # 9 0 0 0 # 10 11 12 13 # [ of size 5x4 (GPU 0)] Now this looks definitely wrong. Increase C's dimension to something like (3, 500), and it overwrites other tensors or triggers asserts. Same thing happens with indexcopy_.
I'll take it if no one's looking at it yet.


Question: .. math:: f(X) = sqrt[p]{sum_{x in X} x^{p}} <del> - At p = infinity, one gets Max Pooling - At p = 1, one gets Average Pooling </del> <ins> - At p = infinity, one gets Max Pooling - At p = 1, one gets Sum Pooling (which is proportional to Average Pooling) </ins> The parameters :attr:`kernel_size`, :attr:`stride` can either be:

The math rendering doesn't end where it should, making the text after it difficult to read: <img width="719" alt="screen shot 2018-03-12 at 5 07 03 pm" src="https://user-"
Thanks for the report! Would you be interested in submitting a PR that fixes it?
Sure, I can give it a try!
This is being fixed in this PR


Question: } #if CUDA_VERSION >= 9010 <del> void THCudaBlas_HgemmStridedBatched(THCState *state, char transa, char transb, long m, long n, long k, half alpha, const half *a, long lda, long strideA, const half *b, long ldb, long strideB, half beta, half *c, long ldc, long strideC, long batchCount) </del> <ins> void THCudaBlas_HgemmStridedBatched(THCState *state, char transa, char transb, int64_t m, int64_t n, int64_t k, half alpha, const half *a, int64_t lda, int64_t strideA, const half *b, int64_t ldb, int64_t strideB, half beta, half *c, int64_t ldc, int64_t strideC, int64_t batchCount) </ins> { if( (m >= INT_MAX) || (n >= INT_MAX) || (k >= INT_MAX) || (lda >= INT_MAX)  || (ldb >= INT_MAX) || (ldc >= INT_MAX) || (batchCount >= INT_MAX) )

I am trying to build PyTorch from source on macOS High Sierra Version 10.13.3 with an NVIDIA GeForce GT 750M. I'm following the instructions at prints prints prints prints When I enter , as per the instructions, I receive the following error message:
Carlos - this may be minor but I eventually found problems with ananconda for this an other CUDA-enabled builds. Couple of things that may help: a - ensure that your activated conda environment is env actually the env you want. I was checking the path with and it was showing the incorrect path to python and pip half of the time. I ended up creating new conda environments (switching to miniconda by the way) and passing the python=3.6 flag to ensure a full environment was deployed. Maybe somehow reverts back to an incorrect path b - in your activated environment, c - make sure a recent OS update didn't bump your CommandLineTools to v 9.0 (I found 8.0 was the only that worked, not 8.1) I built this on 10.12, CUDA 9, cudNN 7.0.
Could you see if can build for you? I don't have CUDA 9 on mac, so it'd be great if you can let me know if it works or not. :)
I'm no longer getting an error at installation, but still returns for some reason.


Question: END_HANDLE_TH_ERRORS } <ins> PyObject * THCPModule_getLibPath(PyObject *_unused) { #define _STR(x) #x #define STR(x) _STR(x) #if PY_MAJOR_VERSION == 2 return PyString_FromString(STR(CUDA_LIB_PATH)); #else return PyUnicode_FromString(STR(CUDA_LIB_PATH)); #endif #undef STR #undef _STR } </ins> //////////////////////////////////////////////////////////////////////////////// // Cuda module initialization ////////////////////////////////////////////////////////////////////////////////

right now if is not in LDLIBRARYPATH, though it was found at compile-time, these lines will fail: Avoid this, by idk doing something... I think i have a few good ideas.
We need to add /usr/local/cuda/lib64 (or that's mac dir) to the rpath of _C
the problem i dont think is to add it to rpath, it's because we
Right. We could try with the default cuda installation path if it's not found from LDLIBRARYPATH.
Actually, do we really want to use the compile path? We should try to detect it at runtime, right? Or are we going to ship CUDA libs in our binaries?
we first load using runtime paths, and if it fails, fallback to path known at compile time.
I fear this is going to get brittle, especially if you are shipping CUDA libs. e.g. a user swaps HW and picks up a new driver and/or toolkit. As says, I'm pretty sure you want to use the runtime paths. Similarly, CUDA 7.5 won't run on Pascal and we have a cudnn built for 7.5 that will not do the right thing on CUDA 8, so those need to go together. If a user installs the CUDA bits via deb/rpm the right things are supposed to happen. If you push bits, we need to figure out how to make sure things line up. But this is perhaps a much larger packaging conversation.
Yeah, I've implemented it to first try loading it without any path and then try and . I'll push the commit tomorrow.


Question: def backward(self, grad_output): # TODO: not sure if this clone is necessary <del> return grad_output.clone().view(self.input_size) </del> <ins> return grad_output.contiguous().view(self.input_size) </ins> class Expand(Function):

Libtorch LTS couldn't be downloaded! to ! the link For example: (Linux) (Windows) There's the error ! LibTorch LTS(1.8.2) could be downloaded One user has reported the issue in forum cc
cc:
I can take care of this today, seems with the new lts stuff we neglected the libtorch uploads


Question: static inline __host__ __device__  uint8_t mul(uint8_t a, uint8_t b) { return a * b; } static inline __host__ __device__  uint8_t sub(uint8_t a, uint8_t b) { return a - b; } static inline __host__ __device__  uint8_t div(uint8_t a, uint8_t b) { return a / b; } <del> static inline __host__ __device__  uint8_t abs(uint8_t a) { return abs(a); } </del> <ins> static inline __host__ __device__  uint8_t abs(uint8_t a) { return a; } </ins> }; template <>

My compiler (Apple LLVM version 8.1.0 (clang-802.0.42) complained about this, but I think it's reasonable. In the specialization THCNumerics<uint8tthe abs-function is defined in a selfrecursive way ie uint8t abs(uint8t a) { return abs(a); } Because an uint8t has no sign it should imo defined as uint8t abs(uint8t a) { return a; }
Yup that's an error. Can you please send a PR?
I am sorry. I am inexperienced with that and have not currently time. But I will soon invest some time in learning it.
I'm volunteer to push a patch for this issue.


Question: import traceback import os import time <del> from torch._six import string_classes, int_classes </del> <ins> from torch._six import string_classes, int_classes, FileNotFoundError </ins> IS_WINDOWS = sys.platform == "win32" if IS_WINDOWS:


Question: import traceback import os import time <del> from torch._six import string_classes, int_classes </del> <ins> from torch._six import string_classes, int_classes, FileNotFoundError </ins> IS_WINDOWS = sys.platform == "win32" if IS_WINDOWS:


Question: #endif #if CUDA_VERSION >= 9010 <del> void THCudaBlas_HgemmStridedBatched(THCState *state, char transa, char transb, long m, long n, long k, half alpha, const half *a, long lda, long strideA, const half *b, long ldb, long strideB, half beta, half *c, long ldc, long strideC, long batchCount); </del> <ins> void THCudaBlas_HgemmStridedBatched(THCState *state, char transa, char transb, int64_t m, int64_t n, int64_t k, half alpha, const half *a, int64_t lda, int64_t strideA, const half *b, int64_t ldb, int64_t strideB, half beta, half *c, int64_t ldc, int64_t strideC, int64_t batchCount); </ins> #endif /* Inverse */


Question: // So we'll convert all Numpy tensors of 0 elements to empty Torch tensors. if (PyArray_SIZE(array) != 0) { auto ndim = PyArray_NDIM(array); <ins> size_t storage_size = 1; </ins> THLongStoragePtr sizes = THLongStorage_newWithSize(ndim); long *sizes_data = sizes->data; for (int i = 0; i < ndim; ++i) {

I followed the guide The command was working just fine until a couple days ago, but now it returns I manually checked and there is no cu100/[...] What should I do? I have CUDA 10.0 I would like to use pytorch...
You could try as a temporary workground. cc
This is most likely related to this: I've re-uploaded the stable html to re-include the cu100 binaries, and submitted a PR to make sure this doesn't happen again


Question: // So we'll convert all Numpy tensors of 0 elements to empty Torch tensors. if (PyArray_SIZE(array) != 0) { auto ndim = PyArray_NDIM(array); <ins> size_t storage_size = 1; </ins> THLongStoragePtr sizes = THLongStorage_newWithSize(ndim); long *sizes_data = sizes->data; for (int i = 0; i < ndim; ++i) {

Repro: Strides seem to be copied correctly, and the first row is also ok. All other rows are garbage.


Question: import os.path import torch.nn.modules.activation import torch.autograd <ins> import matplotlib matplotlib.use('Agg') </ins> import pylab

CC who was asking me about doc generation yesterday. Full log And CC
You probably know why this is happening, but just in case: fixes this. (as per: ) Matplotlib is trying to open a display window on what I assume is a screen-less server.


Question: self.assertEqual(output.shape, [3, 5, 1, 2]) # All input dimensions must be named <del> with self.assertRaisesRegex(RuntimeError, "All input dims must be named"): </del> <ins> with self.assertRaisesRegex(RuntimeError, "All input dims must be named. Found unnamed dim at index 0"): </ins> create('None:2,C:3').align_to('N', 'C') # not enough names


Question: self.assertEqual(output.shape, [3, 5, 1, 2]) # All input dimensions must be named <del> with self.assertRaisesRegex(RuntimeError, "All input dims must be named"): </del> <ins> with self.assertRaisesRegex(RuntimeError, "All input dims must be named. Found unnamed dim at index 0"): </ins> create('None:2,C:3').align_to('N', 'C') # not enough names


Question: dims = THCudaLongTensor_nDimension(state, indices); THArgCheck(dims <= MAX_CUTORCH_DIMS, 4, CUTORCH_DIM_WARNING); <del> ptrdiff_t numIndices = THCudaLongTensor_nElement(state, indices); int srcDims = THCTensor_(nDimension)(state, src); cudaStream_t stream = THCState_getCurrentStream(state); THArgCheck(THCudaLongTensor_nDimension(state, indices) == 1, 3, "expecting vector of indices"); THArgCheck(dim < srcDims, 4, "Indexing dim is out of bounds"); THArgCheck(srcDims > 0, 2, "Source tensor is empty"); THArgCheck(numIndices == src->size[dim], 4, "length of src.size[dim] is not equal to length of indices"); int indContig = THCudaLongTensor_isContiguous(state, indices); </del> // The `src` is partitioned into two parts: // -the size of each slice we are indexing, which is the // total size of the tensor ignoring dimension `dim`; // -the number of indices we are choosing, which is the total size // of the tensor `indices`. <ins> ptrdiff_t sliceSize = THCTensor_(getSliceSize)(state, dst, dim, indices, src); </ins> ptrdiff_t srcTotalSize = THCTensor_(nElement)(state, src); int64_t dstCopyDimSize = THCTensor_(size)(state, dst, dim); <del> ptrdiff_t sliceSize = srcTotalSize / numIndices; </del> <ins> ptrdiff_t numIndices = THCudaLongTensor_nElement(state, indices); cudaStream_t stream = THCState_getCurrentStream(state); int indContig = THCudaLongTensor_isContiguous(state, indices); </ins> int mpc = THCState_getCurrentDeviceProperties(state)->multiProcessorCount;


Question: The default value of `model_dir` is ``$TORCH_HOME/models`` where ``$TORCH_HOME`` defaults to ``~/.torch``. The default directory can be <del> overriden with the ``$TORCH_MODEL_ZOO`` environement variable. </del> <ins> overriden with the ``$TORCH_MODEL_ZOO`` environment variable. </ins> Args: url (string): URL of the object to download

When converting a tensor to dlpack, the strides of single-value tensors () should be normalized to . This is the fallout conclusion from . Here is a demo of what is wrong: Collecting environment information... PyTorch version: 1.10.0a0+git2aa19f3 Is debug build: False CUDA used to build PyTorch: Could not collect ROCM used to build PyTorch: N/A OS: Ubuntu 20.04.4 LTS (x8664) GCC version: (GCC) 9.4.0 Clang version: 12.0.1 ( ) CMake version: version 3.21.1 Libc version: glibc-2.31 Python version: 3.9.6 (default, Jul 11 2021, 03:39:48) [GCC 9.3.0] (64-bit runtime) Python platform: Linux-5.4.0-122-generic-x8664-with-glibc2.31 Is CUDA available: False CUDA runtime version: 11.2.152 GPU models and configuration: GPU 0: NVIDIA GeForce GTX 1660 SUPER Nvidia driver version: 470.141.03 cuDNN version: /usr/lib/x8664-linux- HIP runtime version: N/A MIOpen runtime version: N/A Is XNNPACK available: False Versions of relevant libraries: [pip3] mypy==0.812 [pip3] mypy-extensions==0.4.3 [pip3] numpy==1.21.2 [pip3] torch==1.10.0a0+git2aa19f3 [pip3] torchaudio==0.10.0a0+ [conda] magma-cuda112 2.5.2 1 pytorch [conda] mkl 2021.3.0 h726a3e6557 conda-forge [conda] mkl-include 2021.3.0 h726a3e6557 conda-forge [conda] numpy 1.21.2 py39hdbf815f0 conda-forge [conda] torch 1.12.0a0+git1f29b31 dev0 <develop[conda] torchaudio 0.10.0a0+ pypi0 pypi
does this capture the problem?


Question: # automatically filled by the dynamic loader. import os as _dl_flags <ins> # if we have numpy, it *must* be imported before the call to setdlopenflags() # or there is risk that later c modules will segfault when importing numpy try: import numpy as np except: pass </ins> # first check if the os package has the required flags if not hasattr(_dl_flags, 'RTLD_GLOBAL') or not hasattr(_dl_flags, 'RTLD_NOW'): try:

As shown in below. Is this something expected? This seems most closely related to , but it is closed without any specific solutions.
Importing after also causes segv:
Happens with sklearn as well. . Reversing the order of imports seems to fix things for me though.
Can you reinstall sklearn or scipy? I think I've seen a case where that helped.
I've tried reinstalling things. Doesn't fix it. Could it be because scikit seems to build using openblas and not MKL?
I don't think so, it's a problem with numpy initialization. AFAIK the same was happening with TF, not sure if it's solved now.
same. run import scipy/ import sklearn after torch will cause error. but it's all right if load these two first.


Question: } __global__ void createBatchGemmBuffer3(const real** buffer1, const real ** buffer2, const real ** buffer3, real* data1, <del> real * data2, real * data3, long stride1, long stride2, long stride3, long num_batches) { const long idx = blockIdx.x * blockDim.x + threadIdx.x; </del> <ins> real * data2, real * data3, int64_t stride1, int64_t stride2, int64_t stride3, int64_t num_batches) { const int64_t idx = blockIdx.x * blockDim.x + threadIdx.x; </ins> if (idx < num_batches) { buffer1[idx] = data1 + idx * stride1; buffer2[idx] = data2 + idx * stride2;


Question: ), dict( module_name='Conv3d', <ins> constructor_args=(3, 4, (2, 3, 4), 1, 0, 1, 1, False), input_size=(2, 3, 3, 4, 5), cudnn=True, desc='no_bias' ), dict( module_name='Conv3d', </ins> constructor_args=(3, 4, 2, 2), input_size=(2, 3, 5, 5, 5), cudnn=True,

Hi, I'm trying to create a module that, given an n-dimensional returns an n+2 dimensional arranged correspondingly from slices of a 3-dimensional . In theory this can be accomplished with plus a reshape, except that I need the matrix corresponding to the to be the identity matrix instead of a zero matrix. This could be accomplished by allowing the user to specify what default vector is returned corresponding to . Would that be possible? Thanks, Shawn
this is certainly possible to implement, we have to change our C backends slightly to accommodate this. will put it on a list of things to do
Closing this because it is possible to specify a custom value to use for the vector at . An example of doing so is in the .


Question: y_cpu_nhwc.data<float>(), y_cpu_nhwc.size()); int max_diff_idx = -1; (y_cpu_vec - y_gpu_vec).cwiseAbs().maxCoeff(&max_diff_idx); <del> EXPECT_FLOAT_EQ(y_cpu_vec[max_diff_idx], y_gpu_vec[max_diff_idx]); </del> <ins> EXPECT_NEAR(y_cpu_vec[max_diff_idx], y_gpu_vec[max_diff_idx], 1e-1); </ins> max_diff_idx = -1; (y_cpu_vec - y_cpu_nhwc_vec).cwiseAbs().maxCoeff(&max_diff_idx);

CC If no one has time to investigate we should disable this test.
Sounds like a float-point precision issue? Maybe replacing EXPECTFLOATEQ with EXPECT_NEAR can help.


Question: import sys import os <del> # TODO: make this more robust WITH_CUDA = os.path.exists('/Developer/NVIDIA/CUDA-7.5/include') or os.path.exists('/usr/local/cuda/include') </del> <ins> CUDA_HOME = os.getenv('CUDA_HOME', '/usr/local/cuda') WITH_CUDA = os.path.exists(CUDA_HOME) </ins> WITH_CUDNN = WITH_CUDA DEBUG = False


Question: dims = THCudaLongTensor_nDimension(state, indices); THArgCheck(dims <= MAX_CUTORCH_DIMS, 4, CUTORCH_DIM_WARNING); <del> ptrdiff_t numIndices = THCudaLongTensor_nElement(state, indices); int srcDims = THCTensor_(nDimension)(state, src); cudaStream_t stream = THCState_getCurrentStream(state); THArgCheck(THCudaLongTensor_nDimension(state, indices) == 1, 3, "expecting vector of indices"); THArgCheck(dim < srcDims, 4, "Indexing dim is out of bounds"); THArgCheck(srcDims > 0, 2, "Source tensor is empty"); THArgCheck(numIndices == src->size[dim], 4, "length of src.size[dim] is not equal to length of indices"); int indContig = THCudaLongTensor_isContiguous(state, indices); </del> // The `src` is partitioned into two parts: // -the size of each slice we are indexing, which is the // total size of the tensor ignoring dimension `dim`; // -the number of indices we are choosing, which is the total size // of the tensor `indices`. <ins> ptrdiff_t sliceSize = THCTensor_(getSliceSize)(state, dst, dim, indices, src); </ins> ptrdiff_t srcTotalSize = THCTensor_(nElement)(state, src); int64_t dstAddDimSize = THCTensor_(size)(state, dst, dim); <del> ptrdiff_t sliceSize = srcTotalSize / numIndices; </del> <ins> ptrdiff_t numIndices = THCudaLongTensor_nElement(state, indices); cudaStream_t stream = THCState_getCurrentStream(state); int indContig = THCudaLongTensor_isContiguous(state, indices); </ins> int mpc = THCState_getCurrentDeviceProperties(state)->multiProcessorCount;


Question: if (len(self.needs_input_grad) > 1 and self.needs_input_grad[2]) or self.use_cudnn: grad_bias = bias.new(bias.size()).zero_() <del> if self.use_cudnn: </del> <ins> if self.use_cudnn and self.training: # cudnn does not support backward in evaluate mode </ins> torch._C._cudnn_batch_norm_backward( input, grad_output, grad_input, grad_weight, grad_bias, weight,

Gradient changes, though inputs, outputs, and internal state stay same. Even when I run forward in evaluation mode and backward in training I still get the gradient changed. It works fine with cudnn disabled.
cudnn does not support backprop in evaluate mode, we should add a fallback to nn for this case
Hi, thanks for the report. It turns out that the cudnn library (at least up to v5) doesn't support backward in evaluation mode. We should assert that in the code.
Hi, thanks for the responses. What about another case when you run forward in evaluation mode and backward in training? It produces same issue, but seems to work fine in lua torch. Here is the code with changes: If there is another way to implement virtual batch normalization - please share.
this should be fixed in master. It will be incorporated into the next release that will have binaries late today.
Out of curiosity, why do backward in evaluate mode? (Or rather, what is virtual batch normalization?)
a lot of research involves this. For example neural style transfer, or etc.


Question: array = np.array([1, 2, 3, 4], dtype=dtype) self.assertEqual(torch.from_numpy(array), torch.Tensor([1, 2, 3, 4])) <ins> # check storage offset x = np.linspace(1, 125, 125) x.shape = (5, 5, 5) x = x[1] expected = torch.range(1, 125).view(5, 5, 5)[1] self.assertEqual(torch.from_numpy(x), expected) # check noncontiguous x = np.linspace(1, 25, 25) x.shape = (5, 5) expected = torch.range(1, 25).view(5, 5).t() self.assertEqual(torch.from_numpy(x.T), expected) # check noncontiguous with holes x = np.linspace(1, 125, 125) x.shape = (5, 5, 5) x = x[:, 1] expected = torch.range(1, 125).view(5, 5, 5)[:, 1] self.assertEqual(torch.from_numpy(x), expected) </ins> @unittest.skipIf(not TEST_NUMPY, "Numpy not found") def test_numpy_index(self): i = np.int32([0, 1, 2])


Question: array = np.array([1, 2, 3, 4], dtype=dtype) self.assertEqual(torch.from_numpy(array), torch.Tensor([1, 2, 3, 4])) <ins> # check storage offset x = np.linspace(1, 125, 125) x.shape = (5, 5, 5) x = x[1] expected = torch.range(1, 125).view(5, 5, 5)[1] self.assertEqual(torch.from_numpy(x), expected) # check noncontiguous x = np.linspace(1, 25, 25) x.shape = (5, 5) expected = torch.range(1, 25).view(5, 5).t() self.assertEqual(torch.from_numpy(x.T), expected) # check noncontiguous with holes x = np.linspace(1, 125, 125) x.shape = (5, 5, 5) x = x[:, 1] expected = torch.range(1, 125).view(5, 5, 5)[:, 1] self.assertEqual(torch.from_numpy(x), expected) </ins> @unittest.skipIf(not TEST_NUMPY, "Numpy not found") def test_numpy_index(self): i = np.int32([0, 1, 2])


Question: def load_url(url, model_dir=None, map_location=None): r"""Loads the Torch serialized object at the given URL. <del> If the object is already present in `model_dir`, it's deserialied and </del> <ins> If the object is already present in `model_dir`, it's deserialized and </ins> returned. The filename part of the URL should follow the naming convention ``filename-<sha256>.ext`` where ``<sha256>`` is the first eight or more digits of the SHA256 hash of the contents of the file. The hash is used to


Question: include("${CMAKE_UTILS_PATH}") torch_cuda_get_nvcc_gencode_flag(NVCC_GENCODE) <del> string (REPLACE ";" " " NVCC_GENCODE "${NVCC_GENCODE}") string (REPLACE "-gencode " "-gencode=" NVCC_GENCODE "${NVCC_GENCODE}") </del> <ins> string(REPLACE "-gencode;" "-gencode=" NVCC_GENCODE "${NVCC_GENCODE}") </ins> message(STATUS "Set NVCC_GENCODE for building NCCL: ${NVCC_GENCODE}") ADD_CUSTOM_COMMAND(

Steps to reproduce: a CI CUDA docker image, e.g.,  PyTorch, and run Expected result: It works Actual result: Workaround: set forces only one to be passed.
CC is this the nccl+sccache problem you were seeing?
cc has the exact error. CI log doesn't actually post the error.
sccache probably doesn't allow passing multiple right now, I can look into it if needed.
I am having this same error. How can you figure out which gencode to pass? I'm trying to build from source from a Dockerfile as well, as seen in this gist:
this is super helpful, thanks.
just wanted to make sure you saw that this is pulling from a ppc64le (IBM Power system) docker image, so you'll run into different issues if trying to build on an x64 machine.
I modified it very slightly for x64: It seems to build pytorch successfully for me (on latest master I suppose).
looking into this


Question: const auto& dim = tensor_names[idx]; TORCH_CHECK(dim.isBasic(), "align_to: All input dims must be named. Found unnamed dim at index ", <del> dim, " of Tensor", tensor_names); </del> <ins> idx, " of Tensor", tensor_names); </ins> auto it = std::find(names.begin(), names.end(), dim); TORCH_CHECK(it != names.end(), "align_to: Cannot find dim ", dim, " from Tensor", names,

only supports fully named inputs; all input dimensions must have a name. When passing it an unnamed input, it errors out with the following message: It should really say "Found unnamed dim at index 0 of Tensor[None, None]".
fixed in


Question: const auto& dim = tensor_names[idx]; TORCH_CHECK(dim.isBasic(), "align_to: All input dims must be named. Found unnamed dim at index ", <del> dim, " of Tensor", tensor_names); </del> <ins> idx, " of Tensor", tensor_names); </ins> auto it = std::find(names.begin(), names.end(), dim); TORCH_CHECK(it != names.end(), "align_to: Cannot find dim ", dim, " from Tensor", names,

This is an older implementation that I think doesn't make any sense anymore. We should throw a NYI exception for it. The expected behavior for this should be:
fixed in


Question: #ifdef NUMPY_TYPE_ENUM THTensor* THPTensor_(fromNumpy)(PyObject *numpy_array) { PyArrayObject *array = (PyArrayObject*)numpy_array; <del> THStoragePtr storage = THStorage_(newWithDataAndAllocator)( (real*)PyArray_DATA(array), PyArray_NBYTES(array) / sizeof(real), &THNumpyArrayAllocator, new NumpyArrayAllocator(numpy_array)); </del> // Numpy and Torch disagree on empty tensors. In Torch, an empty // tensor is a tensor with zero dimensions. In Numpy, an empty tensor


Question: #ifdef NUMPY_TYPE_ENUM THTensor* THPTensor_(fromNumpy)(PyObject *numpy_array) { PyArrayObject *array = (PyArrayObject*)numpy_array; <del> THStoragePtr storage = THStorage_(newWithDataAndAllocator)( (real*)PyArray_DATA(array), PyArray_NBYTES(array) / sizeof(real), &THNumpyArrayAllocator, new NumpyArrayAllocator(numpy_array)); </del> // Numpy and Torch disagree on empty tensors. In Torch, an empty // tensor is a tensor with zero dimensions. In Numpy, an empty tensor


Question: return PyObject_CallFunctionObjArgs(THPLongTensorClass, array, NULL); } else if (type == NPY_INT32) { return PyObject_CallFunctionObjArgs(THPIntTensorClass, array, NULL); <ins> } else if (type == NPY_INT16) { return PyObject_CallFunctionObjArgs(THPShortTensorClass, array, NULL); </ins> } else if (type == NPY_UINT8) { return PyObject_CallFunctionObjArgs(THPByteTensorClass, array, NULL); }

Should we add a ShortTensor Type, or just convert int16 to IntTensor ?
We already have a type available in pytorch. We have to enable conversion in the relevant function here:
Auto travis-ci failed at python2.7 :(
Do you have any plan to support int8 numpy conversion while you have too?
Char tensor uses char which is not guaranteed to be signed by the C standard. We'd need to change our C code to use a
I try , it complains , any idea?
The error message is quite self explanatory. PyTorch doesn't support tensors at the moment.


Question: THCTensor_(data)(state, result_), ldc, result_->stride[0], num_batches); } else { <del> for (long i = 0; i < num_batches; ++i) { </del> <ins> for (int64_t i = 0; i < num_batches; ++i) { </ins> THCudaBlas_Hgemm( state, transpose_batch1,


Question: See :func:`torch.ormqr` """) <ins> add_docstr_all('permute', r""" permute(*dims) -> Tensor Permute the dimensions of this tensor. Args: *dims (int...): The desired ordering of dimensions Example: >>> x = torch.randn(2, 3, 5) >>> x.size() torch.Size([2, 3, 5]) >>> x.permute(2, 0, 1).size() torch.Size([5, 2, 3]) """) </ins> add_docstr_all('potrf', r""" potrf(upper=True) -> Tensor

I also found this issue when I tried to swap axes of a tensor. I googled an older doc in the source code. Hope it helps.


Question: pass if WITH_CUDA: <del> if platform.system() == 'Darwin': cuda_path = '/Developer/NVIDIA/CUDA-7.5' cuda_include_path = cuda_path + '/include' cuda_lib_path = cuda_path + '/lib' else: cuda_path = '/usr/local/cuda' cuda_include_path = cuda_path + '/include' cuda_lib_path = cuda_path + '/lib64' </del> <ins> cuda_lib_dirs = ['lib64', 'lib'] cuda_include_path = os.path.join(CUDA_HOME, 'include') for lib_dir in cuda_lib_dirs: cuda_lib_path = os.path.join(CUDA_HOME, lib_dir) if os.path.exists(cuda_lib_path): break </ins> include_dirs.append(cuda_include_path) extra_link_args.append('-L' + cuda_lib_path) extra_link_args.append('-Wl,-rpath,' + cuda_lib_path) extra_compile_args += ['-DWITH_CUDA'] <ins> extra_compile_args += ['-DCUDA_LIB_PATH=' + cuda_lib_path] </ins> main_libraries += ['THC'] main_sources += [ "torch/csrc/cuda/Module.cpp",


Question: loss(x, y) = sum_ij(max(0, 1 - (x[y[j]] - x[i]))) / x.size(0) where `i == 0` to `x.size(0)`, `j == 0` to `y.size(0)`, <del> `y[j] != 0`, and `i != y[j]` for all `i` and `j`. </del> <ins> `y[j] >= 0`, and `i != y[j]` for all `i` and `j`. </ins> `y` and `x` must have the same size.

The SDPA tutorial is failing for in Google Colab when run with "CPU" only as the h/w accelerator. The tutorial has a note "If you don’t have a GPU and are running on CPU then the context manager will have no effect and all three runs should return similar timings." however things fail when run on CPU only. Code: Error: Collecting environment information. PyTorch version: 2.1.0+cu118 Is debug build: False CUDA used to build PyTorch: 11.8 ROCM used to build PyTorch: N/A OS: Ubuntu 22.04.2 LTS (x8664) GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Clang version: 14.0.0-1ubuntu1.1 CMake version: version 3.27.7 Libc version: glibc-2.35 Python version: 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] (64-bit runtime) Python platform: Linux-5.15.120+-x8664-with-glibc2.35 Is CUDA available: False CUDA runtime version: 11.8.89 CUDAMODULELOADING set to: N/A GPU models and configuration: Could not collect Nvidia driver version: Could not collect cuDNN version: Probably one of the following: /usr/lib/x8664-linux- /usr/lib/x8664-linux- /usr/lib/x8664-linux- /usr/lib/x8664-linux- /usr/lib/x8664-linux- /usr/lib/x8664-linux- /usr/lib/x8664-linux- HIP runtime version: N/A MIOpen runtime version: N/A Is XNNPACK available: True CPU: Architecture: x8664 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Vendor ID: GenuineIntel Model name: Intel(R) Xeon(R) CPU @ 2.


Question: loss(x, y) = sum_ij(max(0, 1 - (x[y[j]] - x[i]))) / x.size(0) where `i == 0` to `x.size(0)`, `j == 0` to `y.size(0)`, <del> `y[j] != 0`, and `i != y[j]` for all `i` and `j`. </del> <ins> `y[j] >= 0`, and `i != y[j]` for all `i` and `j`. </ins> `y` and `x` must have the same size.

20GHz CPU family: 6 Model: 79 Thread(s) per core: 2 Core(s) per socket: 1 Socket(s): 1 Stepping: 0 BogoMIPS: 4399.99 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constanttsc repgood nopl xtopology nonstoptsc cpuid tscknownfreq pni pclmulqdq ssse3 fma cx16 pcid sse41 sse42 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahflm abm 3dnowprefetch invpcidsingle ssbd ibrs ibpb stibp fsgsbase tscadjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat mdclear archcapabilities Hypervisor vendor: KVM Virtualization type: full L1d cache: 32 KiB (1 instance) L1i cache: 32 KiB (1 instance) L2 cache: 256 KiB (1 instance) L3 cache: 55 MiB (1 instance) NUMA node(s): 1 NUMA node0 CPU(s): 0,1 Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Mitigation; PTE Inversion Vulnerability Mds: Vulnerable; SMT Host state unknown Vulnerability Meltdown: Vulnerable Vulnerability Mmio stale data: Vulnerable Vulnerability Retbleed: Vulnerable Vulnerability Spec store bypass: Vulnerable Vulnerability Spectre v1: Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers Vulnerability Spectre v2: Vulnerable, IBPB: disabled, STIBP: disabled, PBRSB-eIBRS: Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Vulnerable Versions of relevant libraries: [pip3] numpy==1.23.5 [pip3] torch==2.1.0+cu118 [pip3] torchaudio==2.1.


Question: loss(x, y) = sum_ij(max(0, 1 - (x[y[j]] - x[i]))) / x.size(0) where `i == 0` to `x.size(0)`, `j == 0` to `y.size(0)`, <del> `y[j] != 0`, and `i != y[j]` for all `i` and `j`. </del> <ins> `y[j] >= 0`, and `i != y[j]` for all `i` and `j`. </ins> `y` and `x` must have the same size.

0+cu118 [pip3] torchdata==0.7.0 [pip3] torchsummary==1.5.1 [pip3] torchtext==0.16.0 [pip3] torchvision==0.16.0+cu118 [pip3] triton==2.1.0 [conda] Could not collect cc: cc
This operator has not been implemented for . We will push a PR to update the tutorial.


Question: Alternatively, go to: https://pytorch.org/binaries to install a PyTorch version that has been compiled with your version of the CUDA driver.""".format(str(torch._C._cuda_getDriverVersion()))) <ins> def _lazy_init(): global _initialized, _cudart if _initialized: return _check_driver() </ins> assert torch._C._cuda_init() <del> _initialized = True if platform.system() == 'Darwin': _cudart = ctypes.cdll.LoadLibrary('libcudart.dylib') else: _cudart = ctypes.cdll.LoadLibrary('libcudart.so') </del> <ins> _cudart = _load_cudart() </ins> _cudart.cudaGetErrorName.restype = ctypes.c_char_p _cudart.cudaGetErrorString.restype = ctypes.c_char_p <ins> _initialized = True </ins> def cudart():

right now if is not in LDLIBRARYPATH, though it was found at compile-time, these lines will fail: Avoid this, by idk doing something... I think i have a few good ideas.
We need to add /usr/local/cuda/lib64 (or that's mac dir) to the rpath of _C
the problem i dont think is to add it to rpath, it's because we
Right. We could try with the default cuda installation path if it's not found from LDLIBRARYPATH.
Actually, do we really want to use the compile path? We should try to detect it at runtime, right? Or are we going to ship CUDA libs in our binaries?
we first load using runtime paths, and if it fails, fallback to path known at compile time.
I fear this is going to get brittle, especially if you are shipping CUDA libs. e.g. a user swaps HW and picks up a new driver and/or toolkit. As says, I'm pretty sure you want to use the runtime paths. Similarly, CUDA 7.5 won't run on Pascal and we have a cudnn built for 7.5 that will not do the right thing on CUDA 8, so those need to go together. If a user installs the CUDA bits via deb/rpm the right things are supposed to happen. If you push bits, we need to figure out how to make sure things line up. But this is perhaps a much larger packaging conversation.
Yeah, I've implemented it to first try loading it without any path and then try and . I'll push the commit tomorrow.


Question: {"_cuda_sleep", (PyCFunction)THCPModule_cudaSleep, METH_O, NULL}, {"_cuda_lock_mutex",   (PyCFunction)THCPModule_cudaLockMutex,   METH_NOARGS,  NULL}, {"_cuda_unlock_mutex", (PyCFunction)THCPModule_cudaUnlockMutex, METH_NOARGS,  NULL}, <ins> #ifdef WITH_NCCL </ins> {"_nccl_reduce", (PyCFunction)THCPModule_nccl_reduce, METH_VARARGS, NULL}, {"_nccl_all_reduce", (PyCFunction)THCPModule_nccl_all_reduce, METH_VARARGS, NULL}, {"_nccl_broadcast", (PyCFunction)THCPModule_nccl_broadcast, METH_VARARGS, NULL}, {"_nccl_all_gather", (PyCFunction)THCPModule_nccl_all_gather, METH_VARARGS, NULL}, {"_nccl_reduce_scatter", (PyCFunction)THCPModule_nccl_reduce_scatter, METH_VARARGS, NULL}, <ins> #endif </ins> {NULL} };

OSX 10.13, CUDA 9.0, cudnn 7, Got these errors: When compiling here:


Question: "future releases."); return NULL; } <ins> // XXX: this won't work for negative strides storage_size += strides_data[i] * (sizes_data[i] - 1); </ins> } <ins> THStoragePtr storage = THStorage_(newWithDataAndAllocator)( (real*)PyArray_DATA(array), storage_size, &THNumpyArrayAllocator, new NumpyArrayAllocator(numpy_array)); </ins> THTensor *result = THTensor_(newWithStorage)(storage, 0, sizes, strides); return result; } else { <ins> THStoragePtr storage = THStorage_(new)(); </ins> THTensor *result = THTensor_(newWithStorage)(storage, 0, NULL, NULL); return result; }

I followed the guide The command was working just fine until a couple days ago, but now it returns I manually checked and there is no cu100/[...] What should I do? I have CUDA 10.0 I would like to use pytorch...
You could try as a temporary workground. cc
This is most likely related to this: I've re-uploaded the stable html to re-include the cu100 binaries, and submitted a PR to make sure this doesn't happen again


Question: "future releases."); return NULL; } <ins> // XXX: this won't work for negative strides storage_size += strides_data[i] * (sizes_data[i] - 1); </ins> } <ins> THStoragePtr storage = THStorage_(newWithDataAndAllocator)( (real*)PyArray_DATA(array), storage_size, &THNumpyArrayAllocator, new NumpyArrayAllocator(numpy_array)); </ins> THTensor *result = THTensor_(newWithStorage)(storage, 0, sizes, strides); return result; } else { <ins> THStoragePtr storage = THStorage_(new)(); </ins> THTensor *result = THTensor_(newWithStorage)(storage, 0, NULL, NULL); return result; }

Repro: Strides seem to be copied correctly, and the first row is also ok. All other rows are garbage.


Question: int_classes = int <ins> if PY2: FileNotFoundError = IOError else: FileNotFoundError = FileNotFoundError </ins> def with_metaclass(meta, *bases): """Create a base class with a metaclass.""" # This requires a bit of explanation: the basic idea is to make a dummy

Traceback (most recent call last): File "", line 322, in <moduleroislabel = fasterRCNN(imdata, iminfo, gtboxes, numboxes) File "/usr/local/lib/python2.7/dist-", line 491, in call result = self.forward(input, kwargs) File "/home/faster-", line 50, in forward rois, rpnlosscls, rpnlossbbox = self.RCNNrpn(basefeat, iminfo, gtboxes, numboxes) File "/usr/local/lib/python2.7/dist-", line 491, in call result = self.forward(input, kwargs) File "/home/faster-", line 87, in forward rpndata = self.RPNanchortarget((, gtboxes, iminfo, numboxes)) File "/usr/local/lib/python2.7/dist-", line 491, in call result = self.forward(input, kwargs) File "/home/faster-", line 157, in forward positiveweights = 1.0 / numexamples File "/usr/local/lib/python2.7/dist-", line 320, in rdiv return self.reciprocal() other RuntimeError: reciprocal is not implemented for type Exception NameError: "global name 'FileNotFoundError' is not defined" in <bound method of object at 0x7fb842e6e3d0ignored This error is coming while implementing pytorch faster-rcnn repository. Any solutions please??
can you use the issue template, we need more information to help you.
Using Pytorch 0.3.0 solves the problem.
are you using python 2? AFAIK FileNotFoundError only exists in python 3, so this should be fixed Also, this error is hiding the real bug in the code, which seems to be the following: Did you mean to take the reciprocal of a LongTensor?
does the shutdown workers FileNotFoundError happen on python 2.7 as well?
I haven't tested on py2. But I believe it should be an with errno.
Yup I am using Python 2. To overcome this error of FileNotFoundError I have downgraded Pytorch from 0.4.0 version to 0.3.0. Use Pytorch 0.3.0 with Python 2, it will work fine.
alternatively, upgrading to Python 3 will fix the issue (and Python 3 is nicer than Python 2).


Question: int_classes = int <ins> if PY2: FileNotFoundError = IOError else: FileNotFoundError = FileNotFoundError </ins> def with_metaclass(meta, *bases): """Create a base class with a metaclass.""" # This requires a bit of explanation: the basic idea is to make a dummy

We'll fix this though.
For a quick fix you can make python2 compatible by defining FileNotFoundError somewhere
This error still exist in pytorch 0.4
Yes it is fixed after 0.4
I am still getting it...
did you build pytorch from source? It was fixed after 0.4 is released, so it will be in the next pytorch release.
I updated it via
Can anyone help me with my problem?
I was also working with faster r-cnn and got the error. Downgrading to 0.3.0 solved FileNotFoundError but will produce another error: self.ratiolistbatch[leftidx:(rightidx+1)] = ((np.float64)) # trainset ratio list ,each batch is same number TypeError: 'module' object is not callable Where this error is related to in the above error message. Upgrading can solve this error but will produce the previous one. How do you cope with the second error?


Question: dims = THCudaLongTensor_nDimension(state, indices); THArgCheck(dims <= MAX_CUTORCH_DIMS, 4, CUTORCH_DIM_WARNING); <del> ptrdiff_t numIndices = THCudaLongTensor_nElement(state, indices); int srcDims = THCTensor_(nDimension)(state, dst); cudaStream_t stream = THCState_getCurrentStream(state); THArgCheck(THCudaLongTensor_nDimension(state, indices) == 1, 3, "expecting vector of indices"); THArgCheck(dim < srcDims, 4, "Indexing dim is out of bounds"); THArgCheck(srcDims > 0, 2, "Source tensor is empty"); int indContig = THCudaLongTensor_isContiguous(state, indices); </del> // The `src` is partitioned into two parts: // -the size of each slice we are indexing, which is the // total size of the tensor ignoring dimension `dim`; // -the number of indices we are choosing, which is the total size // of the tensor `indices`. <ins> ptrdiff_t sliceSize = THCTensor_(getSliceSize)(state, dst, dim, indices, nullptr); </ins> ptrdiff_t dstTotalSize = THCTensor_(nElement)(state, dst); int64_t dstFillDimSize = THCTensor_(size)(state, dst, dim); <del> ptrdiff_t sliceSize = dstTotalSize / dstFillDimSize; </del> <ins> ptrdiff_t numIndices = THCudaLongTensor_nElement(state, indices); cudaStream_t stream = THCState_getCurrentStream(state); int indContig = THCudaLongTensor_isContiguous(state, indices); </ins> int mpc = THCState_getCurrentDeviceProperties(state)->multiProcessorCount;

A = (5, 4) B = (0, 9).view(3, 3) C = (0, 15).view(3, 5) idxs = torch.LongTensor([0, 2, 4]) A.indexadd(0, idxs, B) # RuntimeError: inconsistent tensor size, expected r [4], t [4] and src [3] to have the same number of elements, but got 4, 4 and 3 elements respectively at (...)/aten/src/TH/generic/THTensorMath.c:1008 A.indexadd(0, idxs, C) # RuntimeError: inconsistent tensor size, expected r [4], t [4] and src [5] to have the same number of elements, but got 4, 4 and 5 elements respectively at (...)/aten/src/TH/generic/THTensorMath.c:1008 So far so good. But if we use CUDA... A = (5, 4).cuda() B = (0, 9).view(3, 3).cuda() C = (0, 15).view(3, 5).cuda() idxs = torch.LongTensor([0, 2, 4]).cuda() A.indexadd(0, idxs, B) print(A) # 0 1 2 0 # 0 0 0 0 # 3 4 5 0 # 0 0 0 0 # 6 7 8 0 # [ of size 5x4 (GPU 0)] OK, this looks wrong... A.zero() A.indexadd(0, idxs, C) print(A) # 0 1 2 3 # 4 0 0 0 # 5 6 7 8 # 9 0 0 0 # 10 11 12 13 # [ of size 5x4 (GPU 0)] Now this looks definitely wrong. Increase C's dimension to something like (3, 500), and it overwrites other tensors or triggers asserts. Same thing happens with indexcopy_.
I'll take it if no one's looking at it yet.


Question: for test in tests: _test(*test) <ins> @unittest.skip("Not implemented yet") </ins> def test_align_tensors(self): def reference_fn(*tensors): longest_names = tensors[0].names


Question: for test in tests: _test(*test) <ins> @unittest.skip("Not implemented yet") </ins> def test_align_tensors(self): def reference_fn(*tensors): longest_names = tensors[0].names


Question: class InstanceNorm1d(_InstanceNorm): <del> r"""Applies Instance Normalization over a 2d or 3d input that is seen as a mini-batch. </del> <ins> r"""Applies Instance Normalization over a 3d input that is seen as a mini-batch. </ins> .. math::

Ref , the input only supports format. This is not consistent with which supports also .
it doesn't make much sense to support instance norm for because it is usually normalizing over dimension.
Okay, so the documentation should be updated?


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

Hello I have a training loop running without any errors or warnings on GPUs using Pytorch 2.0.1. When I try to modify my learning loop to run on TPUs I get the error Pytorch XLA developers solved the problem. But after the problem is solved I get the warning below. /home/mfatih/env38/lib/python3.8/site- UserWarning: aten::reshape: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at ) Variable.executionengine.runbackward( # Calls into the C++ engine to run the backward pass Pytorch XLA developers told me that the warning is related to Pytorch, not Pytorch-XLA. Is this warning an indication of the wrong backward computations? You can regenerate the error using the public . Please change the working directory on in the config file. Run the for debugging. After a successful short train and val cycle we get the warning. The warning occurs in operations placed in the functions in during backward pass. Here is my environment PyTorch version: 2.2.0.dev20231213+cpu Is debug build: False CUDA used to build PyTorch: None ROCM used to build PyTorch: N/A OS: Ubuntu 20.04.4 LTS (x8664) GCC version: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Clang version: Could not collect CMake version: version 3.26.0 Libc version: glibc-2.31 Python version: 3.8.10 (default, Nov 22 2023, 10:22:35) [GCC 9.4.0] (64-bit runtime) Python platform: Linux-5.13.


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

0-1027-gcp-x8664-with-glibc2.29 Is CUDA available: False CUDA runtime version: No CUDA CUDAMODULELOADING set to: N/A GPU models and configuration: No CUDA Nvidia driver version: No CUDA cuDNN version: No CUDA HIP runtime version: N/A MIOpen runtime version: N/A Is XNNPACK available: True CPU: Architecture: x8664 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian Address sizes: 46 bits physical, 48 bits virtual CPU(s): 96 On-line CPU(s) list: 0-95 Thread(s) per core: 2 Core(s) per socket: 24 Socket(s): 2 NUMA node(s): 2 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) CPU @ 2.00GHz Stepping: 3 CPU MHz: 2000.186 BogoMIPS: 4000.37 Hypervisor vendor: KVM Virtualization type: full L1d cache: 1.5 MiB L1i cache: 1.5 MiB L2 cache: 48 MiB L3 cache: 77 MiB NUMA node0 CPU(s): 0-23,48-71 NUMA node1 CPU(s): 24-47,72-95 Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Mitigation; PTE Inversion Vulnerability Mds: Mitigation; Clear CPU buffers; SMT Host state unknown Vulnerability Meltdown: Mitigation; PTI Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and _user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRSFW, STIBP conditional, RSB filling Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Mitigation; Clear CPU buffers;


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

SMT Host state unknown Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constanttsc repgood nopl xtopology nonstoptsc cpuid tscknownfreq pni pclmulqdq ssse3 fma cx16 pcid sse41 sse42 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahflm abm 3dnowprefetch invpcidsingle pti ssbd ibrs ibpb stibp fsgsbase tscadjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat mdclear archcapabilities Versions of relevant libraries: [pip3] numpy==1.24.1 [pip3] torch==2.2.0.dev20231213+cpu [pip3] torch-xla==2.2.0+git5577dd7 [pip3] torchaudio==2.2.0.dev20231213+cpu [pip3] torchmetrics==1.2.1 [pip3] torchsummary==1.5.1 [pip3] torchvision==0.18.0.dev20231213+cpu [conda] Could not collect cc
From the log it seems like it suggese XLA need to manually register the backward for reshape which is a bit weird. This is the first time I see this error, if you can shed some light on this issue that would be great!
Hey! this warning recently as a set of more testing to ensure custom ops are properly registered. This is expected to trigger if you register a backend kernel (XLA key) but no autograd imple (AutogradXLA) for a given op.


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

Since reshape() cannot have an autograd formula (it is sometimes a view and sometimes not), then you should register your kernel as a CompositeImplicitAutograd kernel (this will properly register onto AutogradXLA and remove this warning)
Thanks ! This make sense! I have a follow up question, we registered reshape and reshape symint in and This file will then get codegen into and . What's the correct way of marking to be ?
Ho I'm not familiar with how your codegen works... But in principles, I guess you want to do the same as NestedTensor here which uses for the dispatch key in do you have more context on this by any chance?
it's probably enough for you to just register that kernel to both the and dispatch keys (this is similar to what CompositeImplicitAutograd does, but it does it for all backends). I'm a bit confused though - Why do you need a custom reshape impl? And how are you going to get training support for it? (do you have a custom implementation of your reshape's backward)
Haha this is actually by you in for functionization. Do you think we still need this trick for functionization?
Yes - I think we should be able to remove it. Do you mind trying that? That should just run the existing kernel defined . And that should be identical to the current behavior, since the "registration" for reshape in XLA just calls back into ATen ()
I merged , let's wait and see if tmr's nightly will resolve this issue.
Thank you. I will test it and give feedback. Till now, I have run my experiments with the warning. Do I need to rerun the experiments?
OK, with the recent nighly versions of Pytorch and Pytorch-XLA I do not observe the warning anymore while running my experiments. Thank you. Should I rerun the experiments that were run with past Pytorch versions throwing the warning? Does this update only remove the warning or does it also change the calculations that I ran with the previous Pytorch versions? Can I rely on my previous experiments?
Sorry we have to revert the pr since it creates regression on nightly.
Hello I am using nightly without any problem. What should I do? Wait for new update?
if you don't see any regression in performance, you can likely just keep using today's nightly.


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

I am not even sure if that warning has any real impact on the model yet.
Thank you for the answer Reverting will cause problem for me. But reverting will only regenerate the warning. In my experiments, till now, I have not observed any difference with or without the warning. But I am not 100% sure. I'm looking forward to any more information you can give me.
Seeing the same error. Any solutions?
Yea I need to find someone to look into this issue. It seems like removing the reshape lowering will introduce a regression in performance.
I am facing the same issue, I don't even have a "reshape" call in my code anywhere.
reopened , will try to fix this before the 2.3 release branch cut.
will lead the investigation on the regression that blocks merging Regression only happens in dynamo so my guess is it has something to do with functionization pass..
Running through a small example with on HEAD and on , the snippet HLOo generated for in both cases are: Now will try to experiment with functionalizaton explicitly on/off to see if there are some unexpected decompositions.
I am also experiencing the same problem. I have also seen significant reduction in the learning capabilities of my model. My model has more than 80% accuracy when I trained it in another device without xla. However, its accuracy has been reduced to less than 10% compared to when I trained on a GCP TPU VM with pytorch-xla. It is also apparent that loss values do not change between consecutive epochs during training. Here is a portion of the output including the error message: {'loss': 0.0288, 'gradnorm': 0., 'learningrate': 4.-05, 'epoch': 6.0} {'evalloss': 0., 'evalruntime': 5.4579, 'evalsamplespersecond': 615.621, 'evalstepspersecond': 19.238, 'epoch': 6.0} 20% 2502/ [28:36<1:08:07, 2.45it/s/home/egecitepred/miniconda3/envs/ege/lib/python3.8/site- UserWarning: aten::reshape: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it.


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd. (Triggered internally at ) Variable.executionengine.runbackward( # Calls into the C++ engine to run the backward pass {'loss': 0.0289, 'gradnorm': 0., 'learningrate': 3.-05, 'epoch': 7.0} {'evalloss': 0., 'evalruntime': 5.4422, 'evalsamplespersecond': 617.398, 'evalstepspersecond': 19.294, 'epoch': 7.0} 23% 2919/ [31:44<1:05:13, 2.45it/s/home/egecitepred/miniconda3/envs/ege/lib/python3.8/site- UserWarning: aten::reshape: an autograd kernel was not registered to the Autograd key(s) but we are trying to backprop through it. This may lead to silently incorrect behavior. This behavior is deprecated and will be removed in a future version of PyTorch. If your operator is differentiable, please ensure you have registered an autograd kernel to the correct Autograd key (e.g. DispatchKey::Autograd, DispatchKey::CompositeImplicitAutograd). If your operator is not differentiable, or to squash this warning and use the previous behavior, please register torch::CppFunction::makeFallthrough() to DispatchKey::Autograd.


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

(Triggered internally at ) Variable.executionengine.runbackward( # Calls into the C++ engine to run the backward pass {'loss': 0.0288, 'gradnorm': 0., 'learningrate': 3.-05, 'epoch': 8.0} {'evalloss': 0., 'evalruntime': 5.4432, 'evalsamplespersecond': 617.286, 'evalstepspersecond': 19.29, 'epoch': 8.0} I am also receiving this error message at every epoch. Is it possible to register CompositeImplicitAutograd key to autograd kernel like the error message says? If someone could provide me instructions on registering this key, I could try to see if this fixes the error or at least the reduction of the performance. I don't have enough experience in this area yet. So, I couldn't find a way of registering the autograd key.
Hey thanks for reporting the issue. Just to confirm, the warning messages in the original issue should not have an impact in the performance. We tried to remove this warning message and merged , which caused a performance regression (which is now reverted in head). Which nightlies did you observe the performance regression in your case?
Running a quick experiment on resnet18, the performance is more or so similar with HEAD and reshape op removed. With HEAD, timing some runs of the resnet18 dynamo unit test: And timing some runs of the resnet18 dynamo unit test with removed: Before we continue further with the investigation, and I discussed that if simply registering this kernel to both the AutogradXLA and XLA dispatch keys would remove the warning message, we might just do that.. though I'm not too familiar this. do you know how can we register the kernel?
Hello This message seems to slightly reduced the performance of my model unlike others. I am not absolutely sure about this but I made some additional observations that lead me to believe that. I have tried the same model on a GPU without XLA. It has somewhat higher performance compared to TPU VM with PytorchXLA. However, my main problem is the reduction of learning capabilities after training. This error message reduced my result metrics after training from ~80% to ~20% under the same conditions. Also, my output for each epoch shows the same evalloss value.


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

My other experiments on a GPU had the same eval loss value on epoch 1. It seems the model (with TPU XLA) is learning only for the first epoch and fails to properly backprop. Thus, it keeps repeating the first epoch again and again. Although I am not sure about this, it is the only explanation I could come up. I am not sure which nightly version I am using. However, I know that I downloaded this library on February 29th using this command: "pip install torch~=2.2.0 torch_xla[tpu]~=2.2.0 -f "
Hey I wonder if that's a different issue -- could you open a separate issue in PyTorch/XLA? Since Brian is OOO, do you have any idea on the kernel registration mentioned in
From the warning, you are hitting the AutogradXLA key since the fallback at that key is triggering this warning. So the problem is that your differentiable reshape implementation should be registered at that key. If you say above that "ResigisterAutogradXLA.h/cpp." gets generated then I would check if reshare is there. If it is, I would double check that this file is properly included in your binary and properly registers the kernels. You can also check to see all the kernels registered for that op and from where
Hey thanks for the pointers! I tried to register the op to with With this PR, I could see it get registered: However, now I'm getting the error: I assume something is wrong with our new lowering, which is just a redispatch to functionalization -- However, this seems to be what we're doing for some of similar ops -- Maybe I'm just confused here lol, do you see anything obvious that is wrong? Thanks for the help, again!


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

The vision pinned hash is from a long time ago (2020?) and attempting to update it to a newer hash fails. See for examples of CI failing when the hash is updated, and for a possible reason why. When fixed, we should add vision back into . n/a cc
Self-assigning myself to have a look at it
to TorchVision, which changes how operates when given a source folder: instead of execution it extracts the requirements from above-mentioned toml file. So, one can either pass to continue installing torchvision in the old way, or update to contain proper dependencies
fixed by


Question: // TODO: gradOutput shape check // Resize and initialize result tensor. THCTensor_(resizeAs)(state, gradInput, input); <del> THCTensor_(newContiguous)(state, gradInput); </del> THCTensor_(zero)(state, gradInput); int batchSize;

When I try to train my model which contains MaxPool3d , It always end up with 'out of memory' error. my environment info is here: 16.04 PyTorch version: 0.4.0a0+ installed PyTorch from source python version is 3.6.2 CUDA/cuDNN version: 9.1/7.1.2 GCC version (if compiling from source):GCC 5.4 Build command you used (if compiling from source): as default I can reproduce this bug by the following script:
Thanks for the report, I can reproduce this and am looking into it.


Question: Once these are installed, you can use the backend for Caffe2:: # ...continuing from above <del> import onnx.backend.caffe2 as backend </del> <ins> import onnx_caffe2.backend as backend </ins> import numpy as np rep = backend.prepare(graph, device="CUDA:0") # or "CPU" # For the Caffe2 backend: #     rep.predict_net is the Caffe2 protobuf for the network #     rep.workspace is the Caffe2 workspace for the network <del> #       (see the class onnx.backend.c2.Workspace) </del> <ins> #       (see the class onnx_caffe2.backend.Workspace) </ins> outputs = rep.run(np.random.randn(10, 3, 224, 224).astype(np.float32)) # To run networks with more than one input, pass a tuple # rather than a single numpy ndarray.

Functions and does not work correctly when called in DataPrallel mode The reason is while the first thread is budling the extension, the second one asks for a current version, and the returns the version of the first thread build. Second thread then skips lock file and tries to load non existed extension, failing with an error: I would like to submit a PR with a fix: PyTorch version: 2.4.0a0+git8046de3 Is debug build: False CUDA used to build PyTorch: 11.8 ROCM used to build PyTorch: N/A OS: Ubuntu 20.04.6 LTS (x8664) GCC version: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Clang version: Could not collect CMake version: version 3.26.4 Libc version: glibc-2.31 Python version: 3.12.2 (main, Feb 27 2024, 17:35:02) [GCC 11.2.0] (64-bit runtime) Python platform: Linux-5.15.0-105-generic-x8664-with-glibc2.31 Is CUDA available: True CUDA runtime version: 11.8.89 CUDAMODULELOADING set to: LAZY GPU models and configuration: GPU 0: NVIDIA GeForce RTX 3090 GPU 1: NVIDIA GeForce RTX 3090 GPU 2: NVIDIA GeForce RTX 3090 Nvidia driver version: 525.147.05 cuDNN version: Could not collect HIP runtime version: N/A MIOpen runtime version: N/A Is XNNPACK available: True CPU: Architecture: x8664 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian Address sizes: 46 bits physical, 48 bits virtual CPU(s): 36 On-line CPU(s) list: 0-35 Thread(s) per core: 2 Core(s) per socket: 18 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz Stepping: 7 CPU MHz: 3000.000 CPU max MHz: 4800,


Question: Once these are installed, you can use the backend for Caffe2:: # ...continuing from above <del> import onnx.backend.caffe2 as backend </del> <ins> import onnx_caffe2.backend as backend </ins> import numpy as np rep = backend.prepare(graph, device="CUDA:0") # or "CPU" # For the Caffe2 backend: #     rep.predict_net is the Caffe2 protobuf for the network #     rep.workspace is the Caffe2 workspace for the network <del> #       (see the class onnx.backend.c2.Workspace) </del> <ins> #       (see the class onnx_caffe2.backend.Workspace) </ins> outputs = rep.run(np.random.randn(10, 3, 224, 224).astype(np.float32)) # To run networks with more than one input, pass a tuple # rather than a single numpy ndarray.

0000 CPU min MHz: 1200,0000 BogoMIPS: 6000.00 Virtualization: VT-x L1d cache: 576 KiB L1i cache: 576 KiB L2 cache: 18 MiB L3 cache: 24,8 MiB NUMA node0 CPU(s): 0-35 Vulnerability Gather data sampling: Mitigation; Microcode Vulnerability Itlb multihit: KVM: Mitigation: VMX disabled Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Mitigation; Clear CPU buffers; SMT vulnerable Vulnerability Retbleed: Mitigation; Enhanced IBRS Vulnerability Spec rstack overflow: Not affected Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and user pointer sanitization Vulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Mitigation;


Question: Once these are installed, you can use the backend for Caffe2:: # ...continuing from above <del> import onnx.backend.caffe2 as backend </del> <ins> import onnx_caffe2.backend as backend </ins> import numpy as np rep = backend.prepare(graph, device="CUDA:0") # or "CPU" # For the Caffe2 backend: #     rep.predict_net is the Caffe2 protobuf for the network #     rep.workspace is the Caffe2 workspace for the network <del> #       (see the class onnx.backend.c2.Workspace) </del> <ins> #       (see the class onnx_caffe2.backend.Workspace) </ins> outputs = rep.run(np.random.randn(10, 3, 224, 224).astype(np.float32)) # To run networks with more than one input, pass a tuple # rather than a single numpy ndarray.

TSX disabled Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constanttsc art archperfmon pebs bts repgood nopl xtopology nonstoptsc cpuid aperfmperf pni pclmulqdq dtes64 monitor dscpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse41 sse42 x2apic movbe popcnt tscdeadlinetimer aes xsave avx f16c rdrand lahflm abm 3dnowprefetch cpuidfault epb catl3 cdpl3 invpcidsingle ssbd mba ibrs ibpb stibp ibrsenhanced tprshadow vnmi flexpriority ept vpid eptad fsgsbase tscadjust bmi1 avx2 smep bmi2 erms invpcid cqm mpx rdta avx512f avx512dq rdseed adx smap clflushopt clwb intelpt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqmllc cqmoccupllc cqmmbmtotal cqmmbmlocal dtherm ida arat pln pts hwp hwpactwindow hwpepp hwppkgreq avx512vnni mdclear flushl1d archcapabilities Versions of relevant libraries: [pip3] pytorch-triton==3.0.0+ [pip3] torch==2.4.0a0+git8046de3 [conda] magma-cuda110 2.5.2 1 pytorch [conda] mkl-include 2024.1.0 intel691 intel [conda] mkl-static 2024.1.0 intel691 intel [conda] pytorch-triton 3.0.0+ pypi0 pypi [conda] torch 2.4.0a0+git8046de3 dev_0 <developcc


Question: import contextlib import platform import ctypes <ins> import os </ins> import torch _initialized = False

right now if is not in LDLIBRARYPATH, though it was found at compile-time, these lines will fail: Avoid this, by idk doing something... I think i have a few good ideas.
We need to add /usr/local/cuda/lib64 (or that's mac dir) to the rpath of _C
the problem i dont think is to add it to rpath, it's because we
Right. We could try with the default cuda installation path if it's not found from LDLIBRARYPATH.
Actually, do we really want to use the compile path? We should try to detect it at runtime, right? Or are we going to ship CUDA libs in our binaries?
we first load using runtime paths, and if it fails, fallback to path known at compile time.
I fear this is going to get brittle, especially if you are shipping CUDA libs. e.g. a user swaps HW and picks up a new driver and/or toolkit. As says, I'm pretty sure you want to use the runtime paths. Similarly, CUDA 7.5 won't run on Pascal and we have a cudnn built for 7.5 that will not do the right thing on CUDA 8, so those need to go together. If a user installs the CUDA bits via deb/rpm the right things are supposed to happen. If you push bits, we need to figure out how to make sure things line up. But this is perhaps a much larger packaging conversation.
Yeah, I've implemented it to first try loading it without any path and then try and . I'll push the commit tomorrow.


Question: Threshold is defined as:: <del> y =  x        if x >= threshold value    if x <  threshold </del> <ins> y =  x        if x >  threshold value    if x <= threshold </ins> Args: threshold: The value to threshold at

Hello, In the it says So the following: should evaluate to 1, but instead returns 0. Maybe it should be corrected to:


Question: #ifdef TH_REAL_IS_INT #define NUMPY_TYPE_ENUM NPY_INT32 #endif <ins> #ifdef TH_REAL_IS_SHORT #define NUMPY_TYPE_ENUM NPY_INT16 #endif </ins> #ifdef TH_REAL_IS_BYTE #define NUMPY_TYPE_ENUM NPY_UINT8 #endif

Should we add a ShortTensor Type, or just convert int16 to IntTensor ?
We already have a type available in pytorch. We have to enable conversion in the relevant function here:
Auto travis-ci failed at python2.7 :(
Do you have any plan to support int8 numpy conversion while you have too?
Char tensor uses char which is not guaranteed to be signed by the C standard. We'd need to change our C code to use a
I try , it complains , any idea?
The error message is quite self explanatory. PyTorch doesn't support tensors at the moment.


Question: {"_cuda_initialSeed", (PyCFunction)THCPModule_initialSeed, METH_NOARGS, NULL}, {"_cuda_cudaHostAllocator", (PyCFunction)THCPModule_cudaHostAllocator, METH_NOARGS, NULL}, {"_cuda_synchronize", (PyCFunction)THCPModule_cudaSynchronize, METH_NOARGS, NULL}, <ins> {"_cuda_getLibPath", (PyCFunction)THCPModule_getLibPath, METH_NOARGS, NULL}, </ins> #endif {"_safe_call",      (PyCFunction)THPModule_safeCall,          METH_VARARGS | METH_KEYWORDS, NULL}, {"_sendfd",         (PyCFunction)THPModule_sendfd,            METH_VARARGS, NULL},


Question: def align_tensors(*tensors): <del> if not torch._C._BUILD_NAMEDTENSOR: raise RuntimeError('NYI: torch.align_tensors is experimental and a part ' 'of our named tensors project.') return torch._C._VariableFunctions.align_tensors(tensors) </del> <ins> raise RuntimeError('`align_tensors` not yet implemented.') </ins>

only supports fully named inputs; all input dimensions must have a name. When passing it an unnamed input, it errors out with the following message: It should really say "Found unnamed dim at index 0 of Tensor[None, None]".
fixed in


Question: def align_tensors(*tensors): <del> if not torch._C._BUILD_NAMEDTENSOR: raise RuntimeError('NYI: torch.align_tensors is experimental and a part ' 'of our named tensors project.') return torch._C._VariableFunctions.align_tensors(tensors) </del> <ins> raise RuntimeError('`align_tensors` not yet implemented.') </ins>

This is an older implementation that I think doesn't make any sense anymore. We should throw a NYI exception for it. The expected behavior for this should be:
fixed in


Question: return (hasattr(torch._C, '_cuda_isDriverSufficient') and torch._C._cuda_isDriverSufficient()) <del> def _lazy_init(): global _initialized, _cudart if _initialized: return </del> <ins> def _load_cudart(): system = platform.system() lib_name = 'libcudart.' + ('dylib' if system == 'Darwin' else 'so') lib_paths = [ lib_name, os.path.join(torch._C._cuda_getLibPath(), lib_name), os.path.join('/usr/local/cuda/lib64', lib_name), os.path.join('/usr/local/cuda/lib', lib_name), ] for path in lib_paths: try: return ctypes.cdll.LoadLibrary(path) except OSError: pass raise RuntimeError("couldn't find libcudart. Make sure CUDA libraries " "are installed in a default location, or that they're in " + ("DYLD_LIBRARY_PATH" if system == 'Darwin' else "LD_LIBRARY_PATH") + ".") def _check_driver(): </ins> if not hasattr(torch._C, '_cuda_isDriverSufficient'): raise AssertionError("Torch not compiled with CUDA enabled") if not torch._C._cuda_isDriverSufficient():


Question: extern PyObject * THCPModule_initialSeed(PyObject *_unused); extern PyObject * THCPModule_cudaHostAllocator(PyObject *_unused); extern PyObject * THCPModule_cudaSynchronize(PyObject *_unused); <ins> extern PyObject * THCPModule_getLibPath(PyObject *_unused); </ins> #endif static PyMethodDef TorchMethods[] = {


Question: .. math:: f(X) = sqrt[p]{sum_{x in X} x^{p}} <del> - At p = infinity, one gets Max Pooling - At p = 1, one gets Average Pooling </del> <ins> - At p = infinity, one gets Max Pooling - At p = 1, one gets Sum Pooling (which is proportional to Average Pooling) </ins> Args: kernel_size: a single int, the size of the window

The math rendering doesn't end where it should, making the text after it difficult to read: <img width="719" alt="screen shot 2018-03-12 at 5 07 03 pm" src="https://user-"
Thanks for the report! Would you be interested in submitting a PR that fixes it?
Sure, I can give it a try!
This is being fixed in this PR


Question: np.float, np.int64, np.int32, <ins> np.int16, </ins> np.uint8 ] for dtype in dtypes: