A method for improving efficiency of an image search, the method comprising: receiving, by a first processor , one or more images; sending, by the first processor, a query image including the one or more images to a plurality of memory modules for a search, wherein the query image is for a search of memory for a matching image to the one or more images; performing, by a processor-in-memory (PIM) of each respective memory module from the plurality of memory modules, a search of images stored in a memory of the respective memory module, in response to the query image received, wherein the PIM of each respective memory module is configured to perform the search of images by: processing a global descriptor of the one or more images to obtain one or more similarity measurements; and comparing local descriptors of one or more images whose similarity measurements are above a threshold to the images stored in the memory of the respective memory module to obtain the matching images, wherein the images stored in each respective memory module of the plurality of memory modules are different; sending, by the PIM of each respective memory module , the matching image obtained from the search to the first processor; and performing, by the first processor , a comparison of the matching image received from each of the plurality of memory modules to the one or more images to select a result for the search. receiving, by a first processor , one or more images; sending, by the first processor, a query image including the one or more images to a plurality of memory modules for a search, wherein the query image is for a search of memory for a matching image to the one or more images; performing, by a processor-in-memory (PIM) of each respective memory module from the plurality of memory modules, a search of images stored in a memory of the respective memory module, in response to the query image received, wherein the PIM of each respective memory module is configured to perform the search of images by: processing a global descriptor of the one or more images to obtain one or more similarity measurements; and comparing local descriptors of one or more images whose similarity measurements are above a threshold to the images stored in the memory of the respective memory module to obtain the matching images, wherein the images stored in each respective memory module of the plurality of memory modules are different; sending, by the PIM of each respective memory module , the matching image obtained from the search to the first processor; and performing, by the first processor , a comparison of the matching image received from each of the plurality of memory modules to the one or more images to select a result for the search. processing a global descriptor of the one or more images to obtain one or more similarity measurements; and comparing local descriptors of one or more images whose similarity measurements are above a threshold to the images stored in the memory of the respective memory module to obtain the matching images, wherein the images stored in each respective memory module of the plurality of memory modules are different; sending, by the PIM of each respective memory module , the matching image obtained from the search to the first processor; and performing, by the first processor , a comparison of the matching image received from each of the plurality of memory modules to the one or more images to select a result for the search. <EOS>