I got a clear answer from Stackoverflow: https://stackoverflow.com/q/53927358/3907250 138

It depends on the backend (GPU, CPU, distributed etc) but in the most interesting case of GPU it’s pulled from cuDNN 7 which is released in binary format and thus you can’t inspect its source code. It’s a similar story for CPU MKLDNN 3. I am not aware of any place where PyTorch would “handroll” it’s own convolution kernels, but I may be wrong.
It’s difficult without knowing how PyTorch is structured. A lot of code is actually being autogenerated based on various markup files, as explained here 13. Figuring this out requires a lot of jumping around. For instance, the  conv.cpp  file you’re linking uses 3  torch::conv1d , which is defined here 14 and uses  at::convolution  7 which in turn uses  at::_convolution  15, which dispatches to multiple variants, for instance  at::cudnn_convolution  7.  at::cudnn_convolution  is, I believe, created here 13 via a markup file and just plugs in directly to  cuDNN  implementation (though I cannot pinpoint the exact point in code when that happens).