2012. március 24., szombat

HPCWire - The Heterogeneous Programming Jungle

HPCWire - The Heterogeneous Programming Jungle

Being sw "kernel" architect I had to solve the same tasks in several languages, using various tools... I have mentioned my alternate solution here: http://goo.gl/W7xUZ

The problem is that the compiler and the runtime environment does not "see" the logical structure of your program, but has to optimize its operation. This is the root of all evil.

Here, your examples are WRONG.
You don't want to do a maths op on an array, but a thousand entities do the same operation, like calculating blood cells in all the segments of a view. And you don't want to run that cycle, but broadcast that single command to all members.

The solution is a declarative approach. You describe the types, actual object instances and their connections in an external environment. Generate the "connector code" that helps you implement your algorithms in the actual language. So far this would be yet another UML tool, but...

Use a kernel, written and compiled to your actual runtime, for the core operations: object invocation, data manipulation, message sending, locking... Use transparent tools for common operations (binary management, streams, language parsing and text generation, persistent storage, remote connection, GUI, etc). These components use the declarations directly - so they "know" the structure of your solution, and can use their power optimally.

After many experiments, I want to use it in a real system this year. The docs and kernel codes are on GitHub. Critics, comments and help are welcome.