Threads on the CPU are used to gain access to multi-core and hyperthreading resources.
Queues on the GPU are used to gain access to multi-GPU and async-compute ("GPU shader hyperthreading") resources.
Don't make one queue per CPU thread just to make your life easier. Make them only where you explicitly intend to create GPU-side command concurrency. e.g. computing while rasterizing, or copying while computing.
so what do you advise if I want to say do compute stuff while doing shadow map rendering (ie. only depth passes)
I did not test this, but I can guess having two copy queues with different priorities could be a good example where more than one queue are useful: a higher priority queue for things you need to load immediately before presentation and a "normal" priority queue for background copy operations.
There is only one graphics queue queue per adapter node, but the same restriction does not apply to compute and especially copy queues as far I remember. There are no restriction to the number of threads submitting command lists on a single queue, of course you need some kind of synchronization between different threads.
yeah I know that, I guess I'll have to measure out if multiple command queues get me additional perf or not.