Programs written for an architecture with n processors require a re-write when migrated to an m processor architecture {(m > n)} to benefit from additional resources. Compiler based solutions do not match manual optimizations. Annotation based and api-based solutions such as the OpenMP and the Intel Array Building Blocks work well with data parallel programs and do not scale well with branching programs. We present Portable Parallel Programming (TripleP), a parallel programming methodology that is composed of a declarative programming language, a set of libraries of data structures and algorithms optimized per architecture, and a synthesizer. We evaluated TripleP with the computation of array median, and breadth first traversal of a graph. Our results show that TripleP enables portable programs that benefit from additional resources across architectures with near optimal performance gains.