Understanding nn.Conv2d class

I’m trying to understand how nn.Conv2d is implemented.

As described by the example in Extending PyTorch — PyTorch 2.1 documentation, implementing a custom linear layer from absolute scratch means that we need to first implement a custom linear function from scratch that has properly defined forward and backward static methods.

After reading the source code of nn.Conv2d (which is amazingly short), I find that it also relies on a function called F.conv2d, which does ALL the heavy lifting. I can’t find the code for this function, but I’ve found my answer here:

So, my question is:

Does F.conv2d define both forward and backward code in a lower-level language? If so, which file is it? The path provided in the link above has changed.

Source is here: pytorch/conv.py at master · pytorch/pytorch · GitHub
backward method is inherited from torch.nn.Module