def split_mpi_user_prog(cmds):
    """An ad-hoc parser that splits mpiexec args and user program's args"""
    opt_with_one_arg = ['-H', '-host', '--host', '-machinefile',
        '--machinefile', '-hostfile', '--hostfile', '-c', '-n', '--n',
        '-np', '-npersocker', '--npersocker', '-npernode', '--npernode',
        '--map-by', '--rank-by', '--bind-to', '-cpus-per-proc',
        '--cpus-per-proc', '-cpus-per-rank', '--cpus-per-rank',
        '-slot-list', '--slot-list', '-rf', '--rankfile',
        '-output-filename', '--output-filename', '-stdin', '--stdin',
        '-xterm', '--xterm', '-path', '--path', '--prefix',
        '--preload-files', '--preload-files-dest-dir', '--tmpdir', '-wd',
        '-wdir', '-x', '-tune', '--tune', '-aborted', '--aborted', '--app',
        '-cf', '--cartofile', '-ompi-server', '--ompi-server',
        '-report-pid', '--report-pid-report-uri', '--report-uri',
        '-server-wait-time', '--server-wait-time']
    opt_with_two_arg = ['--gmca', '--mca']
    idx = 0
    while True:
        if cmds[idx] in opt_with_one_arg:
            idx += 2
        elif cmds[idx] in opt_with_two_arg:
            idx += 3
        elif cmds[idx].startswith('-'):
            idx += 1
        else:
            break
    return cmds[:idx], cmds[idx:]
