What is the best place to exchange my cash in USD? Should I do it in US or India?
As far as I'm aware it's not possible to get much in the way of rupees outside of India - 25,000 is the limit for bringing them in / taking them out, after the 1000 / 500 rupee note crackdown - about 380 USD at today's rates.
As such, unless you're doing a very short or low budget trip, you'll almost certainly need to get more in India regardless of whether you get some in the US.
Anecdotally, I've also found it surprisingly hard outside of London in the UK to exchange GBP into INR. Only a few specialized places do it so while I'm not sure if this applies in the US it may be worth considering (NB - as per the comments on this answer, apparently this isn't the case in the US and that INR is easy to get from major banks).
Generally speaking, I've found a credit card with "perfect" exchange rates (i.e that follow the Visa / MasterCard base rates with no additional cash advance fees on top) the best way to get foreign cash anywhere, including India.
With that in mind, within India, you can get rupees easily:
via cash machines / ATMs using your credit card (I've found State Bank of India best for this, using my Visa credit card)
taking (ideally new) USD / GBP / EUR bills and changing as cash at exchange counters at the airport or your destination
May be at the airport itself, wherever you are. You may find counters at airport to exchange the currencies, if you are in emergency. But the fee or commission may be higher.
Otherwise, there are Forex companies, where you can visit and ask to exchange the currencies. You may have to do little research to find the best of it, where the commission might be nominal.
Or, it's the best to travel with International Credit or Debit Card, and visit ATM Machine to withdraw the cash.