Remember that Linux treats each available VPEs as a logical CPU. The interaptiv in the Pistachio SoC on the Ci40 board has 2 cores each with 2 VPEs – total 4 logical CPUs. But you’ve configured Linux to support a maximum of 2 CPUs in CONFIG_NR_CPUS – therefore, you only get 2 CPUs – the 2 VPEs of Core0 as shown in your output of /proc/cpuinfo. Configuring Linux for (minimum) 4 CPUs would make all 4 logical CPUs available.
Linux handles the multiple VPEs / multithreading in the Interaptiv core internally and teats them as multiple logical CPUs. Therefore if you have an Interaptiv with 2 cores, 2 threads per core – as on the Ci40 board, Linux will have 4 logical CPUs available to it. If you cat /proc/cpuinfo, you will see these 4 CPUs.
Linux will schedule tasks across these logical CPUs, so if you write an application that uses POSIX pthreads, the threads will be scheduled across the logical CPUs, all VPEs of all physical cores.
If you have a /dev/vpe1 node, I think you have configured the VPE loader. This is intended to allow you to run bare metal code on a VPE while at the same time having Linux running on the others. If you are just wanting to run a multithreaded Linux application, this is certainly not what you needs and you should probably disable CONFIG_MIPS_VPE_LOADER.