As @Lester T. says, hashcat is a good option.
As an add-on, you might also look into GNU Parallel in order to use multiple machines as a cluster. Or perhaps OpenSSI which uses a single system image scheme to utilize multiple machines with a single operating system. With such a system, aircrack-ng can be made to run the same command on multiple machines using many different wordlists or possibly piping a permutation output into aircrack-ng on each machine.
(edit)
Another method I didn't think of at the time of writing this answer would be software called openmpi which is capable of doing the same as the above methods (using multiple machine resources). You can also use openmpi to control how many CPU cores and/or hardware threads a process is allowed to use. openmpi doesn't require root to use on local machines unless the command or program being executed requires root permissions. You can also setup openmpi to autossh to other machines over a network using password-less ssh connections to node0,node1,node2,.... It is really quite useful if a high end GPU isn't available for heavy number crunching.