I think you mean no. It's not automatic, you have to tell the language to use parallel constructs.
And as others have said, this is probably the right approach. At least if it's not taking runtime information into account.
What is very good about this approach (and Rayon does something similar for Rust), is that the code transformation between sequential and parallel constructs is so small. The closer one can come to writing idiomatic code then tweaking it slightly for high performance, the better.
Apologies if this answer isn't hate-y enough. I'll try harder next time.