Memristor devices for next-generation computing: from performance optimization to application-specific co-design | Synapse