Ansible is inherently parallel when executing the same task across multiple hosts (eg, "ensure firmware version X.Y.Z on - it defaults to a fairly low number of "forks", but if you run it on beefy enough hardware, can easily manage hundreds (and in some cases thousands) of devices/hosts in parallel.
I don't think we ship any integrated firmware upgrade modules "in the box", but I've successfully written and deployed custom Ansible modules for ASA and Catalyst firmware upgrades and used them to manage devices at scale (this was before we had command modules for any of those devices). You can probably manage a firmware upgrade using the stuff we have in the box now (check version, make room for + push new binary if necessary, issue upgrade command, reboot), but I've never tried it that way.