Codesign Lessons Learned from Implementing Graph Matching on Multithreaded Architectures