Implementation of Convolution

Can you please point out to me the part of Code where the Convolution ,Maxpool etc are implemented ?

What you’re asking is basically a rabbit hole in terms of source code.
here is at least the source code of nn.conv:

Hello , So…Can’t i find any such implementation of Convolution in the GLOW provided Source Code itself…?

Ah sorry I didn’t see your question was asked in the glow section :face_with_hand_over_mouth:

In InterpreterNodes.cpp i found the code for Interpreter Part of convolution implementation but for CPU part there two different kinds of convolution nodes —CPUConvDKKC8 and Convolution. In the file libjit_cpu_conv.cpp there is some implementation for the convolution. Is that for the two different kind of Convolution nodes? Or what is it …are there any other files where convolution is implemented for CPU …?

Yeah you’re correct. InterpreterNodes is where the Interpreter kernels are. Then for CPU we have a couple different versions of convolution. We implemented a decently performant convolution CPUConvDKKC8 which we found to perform well on x86.

I found the .cpp file where the normal convolutional nodes are changed to CPU specific convolution nodes(CPUConvDKKC8) but for CPU backend where is the convolution implementation written…?in which file…? For Interpreter backend i found it in InterpreterNodes.cpp and may i know similarly where can i find it for CPU…?

I got the files for both of the convolution implementations. How can i know which part of the code is calling these files.(like for example libjit_cpu_conv.cpp- for cpu specific implementation)

Calls are generated to these functions in LLVMIRGen.cpp for any backend that is LLVM-based, which includes the CPU backend. The backend also has its own specialized version aside from LLVMIRGen.cpp, e.g. here for the CPU backend.