Unless your bank seriously sucks (in which case you just need a new bank), the cheapest way to get USD in the United States--by far--is to use an ATM. Lots of chain convenience stores/gas stations now have surcharge-free ATMs, with the added benefit to you and the shop that if you need to break a 20 or two, you can buy something. Sometimes you even get lucky and find an old-school ATM that gives 5s and 20s.
Currency exchange places in the US exist primarily to extract extra money from unsuspecting travelers.