I'm looking for something that can take advantage of my GPU or at the very least, multiple cores of my CPU to convert a few terabytes of FLAC to mp3 (VBR v0) very quickly while preserving all of the tags.
Any advice is greatly appreciated.
Depending on the directory structure (is the data flat?) you could kick of a number of pacpl in parallel. It does a reasonable job at preserving tags when converting.
It won't utilise GPU, but with some parallelisation you should be able to make use of several cores (disk might become the bottle-neck).
OK, so this is actually several problems.
Utilizing several cores wouldn't be too hard, this could be achieved with a shell script and forking.
Here's a very simple example in zsh:
Of course you could optimize that to the number of your cores and make the conversions in batches.
Now, preserving tags is a different thing, I'd probably start with SoX, and see if that can help you. If not, I'd use metaflac to dump the data into a little script, that would set my tags of the MP3 (my favorite program for that is eyeD3). They have to be "translated" by yourself as FLAC tags (which are actually just Vorbis comments) to ID3 tags.
Something like this:
This is of course just one tag, etc., it's just for demonstration. You could combine both snippets, of course.
However, I can't help you with optimizing the problem to be solved by a GPU. I don't quite see how this would help much, as GPUs are optimized for vector calculation.
I've not used this tool but it sounds like what you're looking for. It's called flac2all. Specifically this bullet:
There's even a video on Youtube demonstrating it saturating a 16 core system, titled: flac2all saturating 16 CPU machine (dual quad core + HT).