Omitting your other parallel flags:
parallel --link pf ::: A B ::: C D
This will run your function first with a=A, b=C followed by a=B, b=D or
a=A b=C
a=B b=D
Without --link you get full permutation like this:
a=A b=C
a=A b=D
a=B b=C
a=B b=D
I believe you want to avoid this.