I needed to specify a coreid when creating targets. I added this line to add it to each target.
$_TARGET_NAME configure -coreid $_CORE
One of the coreid descriptions in section 11.3 Target Configuration states:
This value coreid is currently also used in other contexts as a general CPU index, e.g. in SMP nodes or to select a specific CPU in a chip.
After I was able to view all the cores as threads, I had an issue where I couldn't step instructions in the secondary cores. I think this is related to the target state for each of the cores.
To fix this I'm running monitor targets <core number>
to select a core. Then I run monitor step
to put a core in the single-step state. Then I'm allowed to single step in GDB.