Advancing parallel programming through program graph representation and unsupervised code translation