GNU Parallel can do a Cartesian product. You want half of this (bottom triangle of the product). GNU Parallel cannot do this directly. So you have to skip the upper triangle:
parallel [ {2} -gt {1} ] '||' echo {1} {2} ::: $(seq 5) ::: $(seq 5)
For more complex tasks, use $ job-> skip ():
parallel echo {=1' $arg[2] > $arg[1] and $job->skip();' =} {2} ::: $(seq 5) ::: $(seq 5)
source share