Data-intensive computing applications such as object recognition, time series prediction and optimization tasks are becoming increasingly important in several fields including smart mobility, health and industry. Because of the large amount of data involved in the computation, the conventional von Neumann architecture suffers from excessive latency and energy consumption due to the memory bottleneck. A more efficient approach consists of inmemory computing (IMC), where computational operations are directly carried out within the data. IMC can take advantage of the rich physics of memory devices, such as their ability to store analogue values to be used in matrix-vector multiplication (MVM) and their stochasticity which is highly valuable in...