I'm looking for an algorithm that finds all ways to express an integer n as the sum of m (non-negative) integers. I am in particular interested in $m=6$ and $n\leqslant20$. What would be the fastest way to find all possibilities (using a computer, not by hand). If possible, I would like to only look at combinations of six integers, with order not being relevant (that is, [1, 2, 0, 0, 0, 0] and [2, 1, 0, 0, 0, 0] are counted as 1 combination).
The simplest way would be simply trying all permutations with 6 integers lesser than or equal to 20 and only adding the ones that sum up to 20 to our result (followed by removing doubles if we do not want to look at the ordering). This seems like it would take awfully long however, since $20^6$ possibilities will take quite a while to check.
What would be a more efficient way to tackle this?