COPPER: a combinatorial optimization problem solver with processing-in-memory architecture