Enabling collaborative heterogeneous computing