An Associative Memory is built by three consecutive components: (1) a CMOS preprocessing unit generating input feature vectors from picture inputs, (2) an AM cluster generating signature outputs composed of spintronic oscillator (STO) cells and local spin-wave interactions, as an oscillatory CNN (O-CNN) array unit, applied several times arranged in space, and (3) a classification unit (CMOS). The end to end design of the preprocessing unit, the interacting O-CNN arrays, and the classification unit is embedded in a learning and optimization procedure where the geometric distances between the STOs in the O-CNN arrays play a crucial role. The O-CNN array has an input vector as a 1D array of oscillator frequencies, and the synchronized O-CNN array codes the output as the phases of the output 1D array. The typical O-CNN array has 1-3 rows of STOs. Simplified STO and interaction macro models are used. A typical example is shown using an End-to-end Simulator.