Hello,

I would like to ask a theoretical question (regarding multi core hardware) of a Good Programmer.

This may sound completely wild but please bear with me. I don't even want to POST it due to my fundamental ignorance but I WILL ask a generic statement. In terms of game A.I.

I actually think I want to get this to the realm of off- web discussion most likely but... my first conversations here, may determine how "far" I get ...here/now.

anyway, regarding say, for arguments sake, a Game A.I.
...

Multi Core processors are "out" and on shelves.
More are coming.
Most applications available to us do not even UTILIZE 2 cores, let alone 16, 32 or more.
Sun already has one out with 16 cores... for instance.

IS there a way...
to create (let's say) a game Intelligence (AI) that will be capable of sharing itself across 8 / 16/ or 32 cores...

and thereby operating faster?
I would like to discuss this a bit and learn a BIT about the programming principles behind what I am attempting to ask.

if anyone has ANY insight into this type of problem please contact me. The actual "problem" I am interested in discussing is RELATED to something like this.

But is NOT this scenario, exactly...
I would like to be able to learn a smidgeon first, about what it IS that I am speaking of (or trying to speak of), from someone who programs and has half a clue of what I am TRYING to ask.

Thank You so much for reading.
and or replying.

Steve

For instance ONE (answer) to the asked question that would help me begin to understand WHAT I am asking may be... WHAT Programming technology would a programmer USE to make such an application?

What may be the language(s) of choice?
and... other "things" that I don't know yet, to ask even.
just a suggestion.

found some answers

A quick reply off the top of my head for you stvrish. In parallel programming on multicore systems you need to ensure two things:

1. Liveness - that the various processes in your code is actually going to execute *enough* to guarantee throughput, and
2. Safety - that they wont step on each other, ie. race conditions and deadlock.

Google something like "liveness and safety in concurrent systems" and you'll get lots on these topics.

These can be hard to ensure manually - in languages like C++ and Java you can use thread libraries etc. but that's going to seriously cramp your style.

Instead, I would recommend using/learning a language that automatically splits things up across the processes for you.

Erlang, Clojure, Haskell .. to name a few.

It's a very relevant question actually. Compilers/interpretors of these languages do an awesome job of ensuring safety and liveness, well worth the pain of learning, and multicore programming will be a big chunk of the dev market. Intel have an 80 core CPU now..expect hundreds of cores soon.

cheers,
LK

Hey I really appreciate you chipping in. Thank you much

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.