Dave... you say these things were solved a long time ago. Perhaps for just a handful of parallel threads they were, but I was wondering about the difficulties involved when you have thousands of cores available. Also, the NVidia GPU might not be cores in the literal sense right now, but sooner or later they WILL be fully programmable general purpose processing cores, so it seems a bit pedantic to labour that particular point.
DonBerto... give a little get a little.... that's a good point well taken, I'll try to elucidate my thinking a bit more.
Right, so given an arbritrary program, what are the difficulties involved in having the compiler scan the code, figuring out which bits are dependent on others, which bits are independent and thus capable of being parallalised, and inserting sequence points to make sure everything stays synchronised?
Would creating programs using a much finer granularity of objects help, where the objects can run independently and the cores would communicate the object mesages? Could that be automatically synchronised?
Perhaps there might be language constructs to help, eg:
which is a simple example that can obviously be done manually by launching threads but a language construct would make it simpler.
Anyway I'm writing this at the office, my brain is shutting down faster than Windows ever has and it's time for home...