There's no such thing as a "non viable" candidate, unless you listen to the media, which uses psychology and fake polls to make people think that "so and so" doesn't have a chance. If people voted for the best candidate instead of who has the best chance of winning, America would be better off. Yes, if you vote for the best candidate, regardless of polls, you fulfill your obligation.
Another factor which people forget: Typically, only the major races (president, congress, governor) are covered by the media with much effort. Certainly these races are important, but there's usually only 2 candidates which have a chance here. The major opportunity to change america is at the local/state level. The races where no one knows the candidates too well and they are often forgotten (i.e. a state's secretary of state, or state auditor, state senate). If people concentrated as much on these races as they do on the governor or US Congress, each state could be changed for the better, very rapidly. This would have an effect on DC, as state's Attorney Generals and Governors are affected by the state congress and can affect the US Congress through legislation and lawsuits.
My whole point is that if you get into this mindset where you only have to vote when a candidate "has a chance", or you don't have to vote if there's no good candidate, then you are probably going to avoid voting/caring on the local races, since you don't vote/care about the bigger ones. Not following the local/state races is a major lost opportunity that America's middle class has squandered for the last 50 years.