sheepweevil writes "IBM just releasedMilepost GCC, 'the world's first open source machine learning compiler.' The compiler analyses the software and determines which code optimizations will be most effective during compilation using machine learning techniques. Experiments carried out with the compiler achieved an average 18% performance improvement. The compiler is expected to significantly reduce time-to-market of new software, because lengthy manual optimization can now be carried out by the compiler. A new code tuning website has been launched to coincide with the compiler release. The website features collaborative performance tuning and sharing of interesting optimization cases."
I fail to see how automation leads to lower IQ scores. Care to elaborate? How does stepping up the pace, and eliminating tedious, mundane jobs, lead to a lesser society? I call FUD.
wooooosh. See idiocracy. Go out and watch it. I'll wait
I would argue. Either you get it without needing to watch the movie simply by being surrounded by people who in their day to day existence simply follow instructions blindly "because they have to" or you won't get it - whether you watch the movie or not.
As for the GP, I believe he is mixing two things incorrectly:
fail to see how automation leads to lower IQ scores
and
lead to a lesser society
Lower IQ scores don't immediately mean a lesser society, but if you take the thinking out of a process and let a process/machine/program do all the thinking, your mind will inevitably get lazy a
if you take the thinking out of a process and let a process/machine/program do all the thinking, your mind will inevitably get lazy and your work will suffer over time
I think that it could very well free your mind to think about better things. Build systems are a good example. If I had to manually compile each translation unit, I couldn't spend as much time thinking about the code.
Abstraction is one of the foundations of higher thinking. There is something to be said for being able to do lower-level tasks, but you don't concern yourself with the internals of them when you want to treat them as discrete objects. Nobody thinks about the construction of an AND gate when they're designing something that uses AND gates. Nobody thinks about the internal workings of a method or function when they simply want to call it. In every area, the process is the same: You first learn the basic comp
Joke aside, as for any rather absolute statement, there is only a part of truth both in the statement and in its opposite.
Granted, automation does not necessarily lead to a lesser [level of intelligence in] society.
However, not everything that automation can do must necessarily be done by automated means.
For instance, calculators have automated calculus. I for one, welcome our key-laden overlords from arctangent, because I rarely have to compute arctangent and find it handy to have a calculator to do
The compiler is expected to significantly reduce time-to-market of new software, because lengthy manual optimization can now be carried out by the compiler.
Oh, so new software takes too long to build because of lengthy manual optimization? That's news indeed. Even if it did, will the compiler find a better polygon intersection algorithm for me? Will it write a spatial hash? Will it find places when I am calculating something in a tight loop and move the code somewhere higher?
will the compiler find a better polygon intersection algorithm for me? Will it write a spatial hash? Will it find places when I am calculating something in a tight loop and move the code somewhere higher?
The real question in everybody's mind is: will it blend? [willitblend.com]
Oh, so new software takes too long to build because of lengthy manual optimization?
It depends on your definition of optimization.
In my current project we have about twenty guys "performing lengthy manual optimizations". It sounds quite better than having twenty guys "correcting the absolute crap that wouldn't even compile".
Highly optimized software does take a long time to build because of manual optimization. Plus, if anything changes, that optimization might need to be done again. And yes, a good compiler will move that loop for you.
Read the article, that's not what this does. This is a project to automatically generate optimising compilers for custom architectures. The summary is a little unclear:-(
It reduces time to market because you don't have to spend ages making an optimising compiler for your custom chip.
No, this 'learning' compiler only learns how to optimally translate C++ statements to machine level operations. It cannot choose high level algorithms for you. And the reason that such a learning compiler is useful is not to help lazy application programmers, but because developing new, optimised compilers for the many different processors and platforms out there (think computers, mobile phones, embedded systems, etc) is time consuming.
While the the summary is wrong on this subject, I can tell you that, yes, manual optimization is part of our work and can slow down the release of our product. If we told a customer that yes, we will be able to do VGA 30FPS H.264 encode. Code optimization on our custom core is going to take some time and effort. I work in the embedded multimedia field.
I think we're going to be very, very interested in this project.
The compiler is expected to significantly reduce time-to-market of new software, because lengthy manual optimization can now be carried out by the compiler.
How about this: The coders take the time they would have used to "optimize" and instead better document, test, and debug the code. Instead of same quality, less money, make it better quality, same money? You know that the developer isn't going to charge less money for a new product because it took them less time to get it out the door.
Absolutely. This is not for the normal processors we all know and love, nor is it any good for javascript or python etc.
Compilers for C++, C#, java etc. on normal CPUs all have pretty ferocious optimizers already. Not that an attentive human programmer can't make much more of a difference, usually.
I'm not a programmer at all, but have dabbled in a few different languages, as I find programming very interesting. (Got pretty good at mirc scripting when I was younger, which lead to visual basic, C++, and now C# dballing that nvr leads to anything). This said, I have a basic knowledge of programming in general. My question is, What things can a compiler do to your code to 'optimize' it for you? I would think majority of any good optimizations might require rethinking whole methods of doing things and/or
What things can a compiler do to your code to 'optimize' it for you?
Check out the Wikipedia article [wikipedia.org] on optimization for some examples.
In brief, some of the more common ones are things like substituting known values for expressions (e.g. x = 3; y = x + 2; can be changed to x = 3; y = 5;), moving code that doesn't do anything when run repeatedly outside a loop, and architecture-specific optimizations like code scheduling and register allocation. (E.g. with no -O parameters, or -O0, for something like "y = x; z = x;" GCC will generate code that loads "x" from memory twice, once for each statement. With optimization, it will load it once and store it in a register for both instructions.)
If the compiler tries to do this, wouldn't it likely screw your code up?
There are cases where optimizations will screw something up. One example is as follows. It's considered good security practice to zero out memory that held sensitive information (e.g. passwords or cryptographic keys) to limit the lifetime of that data. So you might see something like "password = input(); check(password); zero_memory(password); delete password;". But the compiler might see that zero_memory writes into password, but those values are never read. Why write something if you never need it? So it would remove the zero_memory call as it's useless code that can't affect anything. So it removes it. And your program no longer clears the sensitive memory.
This was actually a bug in a couple crypto libraries for a while.
it optimizes the translation of to assembly opcodes. When you code the stuff you type is not in the binary that's compiled/assembled/linked.
I highly recommend you add a tiny amount of assembly programming dabbling to that list, and you will gain better understanding of how compiler optimization is not a simple affair. There are many ways to do the same thing.
As for an example of a basic optimization method, removing dead code, code that is in there but never called by the main method.
Another one is vector optimization, where certain routines or parts of routines where it's suitable use the vector units of a cpu to speed things up a little.
in regards to learning assembly, if you run linux, the best book I can recommend is Programming from the ground up [gnu.org] it's licensed under the GNU free documentation license, and in my honest opinion is likely the single best book for anyone who has no idea that wants to start, I already had some clue so skipped the first two thirds of the book, but read it for shits and giggles later and found it to be a very easy to grasp book.
To this day if I forget minor details about things I pick that back up and re-read it a bit:)
Assembly itself is not "hard". The language itself is simple. I'd argue that most of the "hardness" is due to its simplicity. There is almost none of the abstract structures and methods that high level languages provide you, and even for something something as "simple" as calling a function, you'll have to manually push data on a stack, jump to the new location, and then pop back the data afterwards, etc.
Might be unnecessary for those programmers who has no interest in understanding how the computer actually works, but it's worth a look.
Disclaimer: I've never really done any assembly programming, but only "dabbled" in it for a bit a few years ago.
I agree that it's a good idea to learn assembly / machine language to understand what a compiler is doing, but learning the assembly language of the computer you use at home is not as reasonable a suggestion today as it once was. Learning to code to a 6802 wasn't bad; it only has a few instructions, and it's very instructive (and fun) to find out how many things you can do with just those. I think trying to write for your home PC in assembly is now beyond a beginner exercise though.
The BBC Micro came with an in-line assembler in the BASIC that shipped with the machine. The manual that came with it had a full reference for BASIC and 6502 assembler. It was a great machine for learning about computers ; lots of languages available, BASIC and assembler out of the box, and so many and varied I/O ports it was a hardware hackers dream as well. I remember the first time I patched in a routine that made the on board sound generate "key ticks" for each keystroke and being thrilled.
Replace a mod (e.g. x % 32) with a bitwise-and (e.g. x & 31) when the divisor is a power of two. Nearly every compiler does this now, but twenty years ago it was a common manual optimization trick.
Replace a branch with an arithmetic operation that yields the same result.
Replace a mod (e.g. x % 32) with a bitwise-and (e.g. x & 31) when the divisor is a power of two.
Another very similar one, and one that comes up more commonly, is the replacement of a multiplication or division by a constant by a series of additions, subtractions, and bitshifts.
For instance, "x/4" is the same as "x>>2", but the division at one point in time (and still with some compilers and no optimization) would produce code that ran slower. Some people still make this optimization by hand, but I
Another very similar one, and one that comes up more commonly, is the replacement of a multiplication or division by a constant by a series of additions, subtractions, and bitshifts.
ARGH! Mod parent down! Please, please, please don't ever repeat this again to people asking things about optimisation. On most modern computers, shifts are slow. They are often even microcoded as multiplications, because they are incredibly rare in code outside segments where someone has decided to 'optimise'. Even when they're not, a typical CPU has more multiply units than shift units and the extra operations needed from the shift and add sequence bloat i-cache usage and cause pipeline stalls by addi
No that's not true. A shift instruction has a one cycle latency and 1/2 cycle throughput on the Core2 / Core2-Duo. An add instruction also has a one cycle latency and 1/3 cycle throughput on the Core2-Duo.
The integer multiplier on the Core2-Duo has a 4-cycle throughput and an 8-cycle latency. So in a "simple" case like x*9 = (x<<3)+x the optimisation would take 2 cycles, and the straight mul would take 8. In more complex cases the individual shifts will pipeline for more of a benefit. Only in cases wh
Before you get flamed to death by some idiot, you've got realise that compilers translate a higher-level language into a lower-level one, typically into machine instructions (or in the case of Java and.NET, virtual machine instructions), turning source code into executable form. Interpreters on the other hand, execute each statement of the language directly (effectively forming a virtual machine for that language).
Naive compiler translations can be functionally correct but sub-optimal with respect to runtime performance, memory/disk footprint etc. Compiler optimisation is the effort to make this translation as optimal as possible with respect to some variable(s) e.g. performance, size
What you are thinking of sound like source code optimization. There are various interpretations of this but to my mind, this means a combination of optimal algorithm selection and optimal algorithm implementation. Note that complex algorithms can be decomposed into smaller common algorithms e.g. a sort routine may be part of some higher-level algorithm, the sort-routine may be optimised independently of the higher-level routine.
What things can a compiler do to your code to 'optimize' it for you?
The correct answer to this question is... it depends. No matter how advanced your compiler is it can't select the correct algorithm for you. If you're ordering your lists with a bubble sort instead of some kind of btree, there's nothing the compiler can do to help you except deliver the best O(n^2) sort it can. A truly artistic programmer can transcend all of the optimizations this compiler might achieve, by several orders of magnitude.
But if you're the kind of code geek that Microsoft hires, yeah, you
It will surely, er, program our programs to kill us.
No, it'll just optimize out all emergency stop and safety routines. Humans inevitably die anyway so there is no point in slowing down the code to prevent it.
Humans inevitably die anyway so there is no point in slowing down the code to prevent it.
In fact, think of how much of an optimization that is! I mean, suppose people were killed by our robot overloads at 25. That's 1/3 of 75 years old; that's a 3x improvement in the speed we go through our life! In a world where a 20% improvement in speed for a new optimization is very impressive, 3x is just great!
It seems like You're computing a spatial Hash! Would You like to use the fastest subroutine I know or use your own?
seriously... this post talk about machine learning optimization, will it be like "more stuff You compile, better luck with resulting machine code" ?
It's like a new GPS navigation software thats not only capable of route optimization but also capable of destination suggestions. "It sounds like You're going to a grocery store to buy pizza... there's a pizza hut round the corner!"
So if I'd compile a Linux from scratch with this new compiler, everything speeds up by 18% on average? That would be quite impressive, and possibly the best justification for Gentoo. Might be nice for my aging notebook...
>The compiler is expected to significantly reduce time-to-market of new software, >because lengthy manual optimization can now be carried out by the compiler.
The time to *make a new compiler* for a certain processor is reduced, and the process of figuring which optimizations are should be in the compiler for that architecture is automated.
This is for the kind of research where they attempt to make many specialized processors on a single chip instead of a general monolithic one. In this case, you need many compilers and tuning those is important. It's the time optimizing THOSE that is lowered, not the one of writing the software that is compiled itself.
I see no real relevance to the "normal" desktop situation on that website.
I always thought that testing and debugging were the lengthy manual steps
Not if you wrote the code well!;-)
Seriously, as someone who's been doing this a long time (since '78, professionally since '82), and who is still at the top of his game, I nowadays spend *very* little time on debugging since it works first time - even the complicated multi-threaded, mutex type of stuff which is what I primarily write nowadays. After a while you stop making mistakes!
But, anyways, it seems the main target for this adapt
Automation... (Score:2, Insightful)
... can create stupid humans. Let's embrace technology but beware of falling into ignorance.
Re: (Score:3, Informative)
I fail to see how automation leads to lower IQ scores. Care to elaborate? How does stepping up the pace, and eliminating tedious, mundane jobs, lead to a lesser society? I call FUD.
wooooosh.
See idiocracy. Go out and watch it. I'll wait
Saw it? Good, now you should get the joke.
Re: (Score:3, Informative)
As for the GP, I believe he is mixing two things incorrectly:
fail to see how automation leads to lower IQ scores
and
lead to a lesser society
Lower IQ scores don't immediately mean a lesser society, but if you take the thinking out of a process and let a process/machine/program do all the thinking, your mind will inevitably get lazy a
Re:Automation... (Score:4, Insightful)
if you take the thinking out of a process and let a process/machine/program do all the thinking, your mind will inevitably get lazy and your work will suffer over time
I think that it could very well free your mind to think about better things. Build systems are a good example. If I had to manually compile each translation unit, I couldn't spend as much time thinking about the code.
Parent
Re: (Score:3, Insightful)
Abstraction is one of the foundations of higher thinking. There is something to be said for being able to do lower-level tasks, but you don't concern yourself with the internals of them when you want to treat them as discrete objects. Nobody thinks about the construction of an AND gate when they're designing something that uses AND gates. Nobody thinks about the internal workings of a method or function when they simply want to call it. In every area, the process is the same: You first learn the basic comp
idiocracy... (Score:2)
Re: (Score:3, Insightful)
Oh really? (Score:5, Insightful)
Oh, so new software takes too long to build because of lengthy manual optimization? That's news indeed. Even if it did, will the compiler find a better polygon intersection algorithm for me? Will it write a spatial hash? Will it find places when I am calculating something in a tight loop and move the code somewhere higher?
Re:Oh really? (Score:5, Interesting)
The last one is actually quite possible, and indeed is a huge area of compiler research.
Parent
Re: (Score:2)
will the compiler find a better polygon intersection algorithm for me? Will it write a spatial hash? Will it find places when I am calculating something in a tight loop and move the code somewhere higher?
The real question in everybody's mind is: will it blend? [willitblend.com]
Re:Oh really? (Score:4, Funny)
Oh, so new software takes too long to build because of lengthy manual optimization?
It depends on your definition of optimization.
In my current project we have about twenty guys "performing lengthy manual optimizations". It sounds quite better than having twenty guys "correcting the absolute crap that wouldn't even compile".
Parent
Re: (Score:2, Insightful)
Re:Oh really? (Score:5, Informative)
Read the article, that's not what this does. This is a project to automatically generate optimising compilers for custom architectures. The summary is a little unclear :-(
It reduces time to market because you don't have to spend ages making an optimising compiler for your custom chip.
Parent
Re: (Score:3, Insightful)
Thanks. That is very, very different from what the summary says.
Re:Oh really? (Score:4, Interesting)
That kind of confusing summaries are too frequent that sometimes I go to RTFA!
Seriously, the summaries should be subject to moderation too (I don't know if the firehose thing lets do that.)
Parent
Re: (Score:3, Informative)
No, this 'learning' compiler only learns how to optimally translate C++ statements to machine level operations. It cannot choose high level algorithms for you. And the reason that such a learning compiler is useful is not to help lazy application programmers, but because developing new, optimised compilers for the many different processors and platforms out there (think computers, mobile phones, embedded systems, etc) is time consuming.
Re: (Score:3, Interesting)
While the the summary is wrong on this subject, I can tell you that, yes, manual optimization is part of our work and can slow down the release of our product. If we told a customer that yes, we will be able to do VGA 30FPS H.264 encode. Code optimization on our custom core is going to take some time and effort. I work in the embedded multimedia field.
I think we're going to be very, very interested in this project.
Oblig. (Score:3, Funny)
Less time? How about same time, better product? (Score:4, Insightful)
The compiler is expected to significantly reduce time-to-market of new software, because lengthy manual optimization can now be carried out by the compiler.
How about this: The coders take the time they would have used to "optimize" and instead better document, test, and debug the code. Instead of same quality, less money, make it better quality, same money? You know that the developer isn't going to charge less money for a new product because it took them less time to get it out the door.
Re: (Score:2)
Instead of same quality, less money, make it better quality, same money?
Yes, that always works.
I'm asking my client right now whether he wants a quality product in february or a barely working one in october. Let's see what happens.
Dumb Summary (Score:5, Insightful)
automatically learn how to best optimise programs for re-configurable heterogeneous embedded processors
That's kinda important to mention no?
Re: (Score:3, Insightful)
Re: (Score:2)
automatically learn how to best optimise programs for re-configurable heterogeneous embedded processors
That's kinda important to mention no?
Well, it could be optimizing for unconfigurable homogeneous strawberry pudings.
It'd be quite more impressive, from a culinary standpoint.
Few Questions for any programmers (Score:2, Interesting)
Re:Few Questions for any programmers (Score:5, Informative)
What things can a compiler do to your code to 'optimize' it for you?
Check out the Wikipedia article [wikipedia.org] on optimization for some examples.
In brief, some of the more common ones are things like substituting known values for expressions (e.g. x = 3; y = x + 2; can be changed to x = 3; y = 5;), moving code that doesn't do anything when run repeatedly outside a loop, and architecture-specific optimizations like code scheduling and register allocation. (E.g. with no -O parameters, or -O0, for something like "y = x; z = x;" GCC will generate code that loads "x" from memory twice, once for each statement. With optimization, it will load it once and store it in a register for both instructions.)
If the compiler tries to do this, wouldn't it likely screw your code up?
There are cases where optimizations will screw something up. One example is as follows. It's considered good security practice to zero out memory that held sensitive information (e.g. passwords or cryptographic keys) to limit the lifetime of that data. So you might see something like "password = input(); check(password); zero_memory(password); delete password;". But the compiler might see that zero_memory writes into password, but those values are never read. Why write something if you never need it? So it would remove the zero_memory call as it's useless code that can't affect anything. So it removes it. And your program no longer clears the sensitive memory.
This was actually a bug in a couple crypto libraries for a while.
Parent
Re:Few Questions for any programmers (Score:5, Insightful)
it optimizes the translation of to assembly opcodes. When you code the stuff you type is not in the binary that's compiled/assembled/linked.
I highly recommend you add a tiny amount of assembly programming dabbling to that list, and you will gain better understanding of how compiler optimization is not a simple affair. There are many ways to do the same thing.
As for an example of a basic optimization method, removing dead code, code that is in there but never called by the main method.
Another one is vector optimization, where certain routines or parts of routines where it's suitable use the vector units of a cpu to speed things up a little.
Parent
Re: (Score:2)
bah, slashdot ate part of what I wrote, in the first line it is meant to be.
it optimizes the translation of "insert high level language here" to assembly opcodes
Re:Few Questions for any programmers (Score:5, Informative)
in regards to learning assembly, if you run linux, the best book I can recommend is Programming from the ground up [gnu.org] it's licensed under the GNU free documentation license, and in my honest opinion is likely the single best book for anyone who has no idea that wants to start, I already had some clue so skipped the first two thirds of the book, but read it for shits and giggles later and found it to be a very easy to grasp book.
To this day if I forget minor details about things I pick that back up and re-read it a bit :)
Parent
Re:Few Questions for any programmers (Score:4, Insightful)
Assembly itself is not "hard". The language itself is simple. I'd argue that most of the "hardness" is due to its simplicity. There is almost none of the abstract structures and methods that high level languages provide you, and even for something something as "simple" as calling a function, you'll have to manually push data on a stack, jump to the new location, and then pop back the data afterwards, etc.
Might be unnecessary for those programmers who has no interest in understanding how the computer actually works, but it's worth a look.
Disclaimer: I've never really done any assembly programming, but only "dabbled" in it for a bit a few years ago.
Parent
Re: (Score:3, Insightful)
I agree that it's a good idea to learn assembly / machine language to understand what a compiler is doing, but learning the assembly language of the computer you use at home is not as reasonable a suggestion today as it once was. Learning to code to a 6802 wasn't bad; it only has a few instructions, and it's very instructive (and fun) to find out how many things you can do with just those. I think trying to write for your home PC in assembly is now beyond a beginner exercise though.
Microcontroller manufac
Re: (Score:3, Informative)
Anybody out there know a good emulator for teaching assembly programming?
SPIM [wisc.edu] is a possibility. It was used in a few courses (operating systems, compilers) at UCB some years ago. (Don't know if it's still used.)
BeebEm (Score:2)
BeebEm?
The BBC Micro came with an in-line assembler in the BASIC that shipped with the machine. The manual that came with it had a full reference for BASIC and 6502 assembler. It was a great machine for learning about computers ; lots of languages available, BASIC and assembler out of the box, and so many and varied I/O ports it was a hardware hackers dream as well. I remember the first time I patched in a routine that made the on board sound generate "key ticks" for each keystroke and being thrilled.
BBC BA
Re: (Score:3, Interesting)
vs
Re: (Score:2, Informative)
Replace a mod (e.g. x % 32) with a bitwise-and (e.g. x & 31) when the divisor is a power of two.
Another very similar one, and one that comes up more commonly, is the replacement of a multiplication or division by a constant by a series of additions, subtractions, and bitshifts.
For instance, "x/4" is the same as "x>>2", but the division at one point in time (and still with some compilers and no optimization) would produce code that ran slower. Some people still make this optimization by hand, but I
Re: (Score:2)
(You can combine operations too. x*7 is the same as x3-x, x*20 is the same as x4 + x2, etc.)
That should be
x*7 == x << 3 - x
x*20 == x << 4 + x << 2
Slashcode (somewhat reasonably) ate my <<s.
Re: (Score:3, Interesting)
Another very similar one, and one that comes up more commonly, is the replacement of a multiplication or division by a constant by a series of additions, subtractions, and bitshifts.
ARGH! Mod parent down! Please, please, please don't ever repeat this again to people asking things about optimisation. On most modern computers, shifts are slow. They are often even microcoded as multiplications, because they are incredibly rare in code outside segments where someone has decided to 'optimise'. Even when they're not, a typical CPU has more multiply units than shift units and the extra operations needed from the shift and add sequence bloat i-cache usage and cause pipeline stalls by addi
Re: (Score:3, Informative)
No that's not true. A shift instruction has a one cycle latency and 1/2 cycle throughput on the Core2 / Core2-Duo. An add instruction also has a one cycle latency and 1/3 cycle throughput on the Core2-Duo.
The integer multiplier on the Core2-Duo has a 4-cycle throughput and an 8-cycle latency. So in a "simple" case like x*9 = (x<<3)+x the optimisation would take 2 cycles, and the straight mul would take 8. In more complex cases the individual shifts will pipeline for more of a benefit. Only in cases wh
Re:Few Questions for any programmers (Score:5, Informative)
Naive compiler translations can be functionally correct but sub-optimal with respect to runtime performance, memory/disk footprint etc. Compiler optimisation is the effort to make this translation as optimal as possible with respect to some variable(s) e.g. performance, size
What you are thinking of sound like source code optimization. There are various interpretations of this but to my mind, this means a combination of optimal algorithm selection and optimal algorithm implementation. Note that complex algorithms can be decomposed into smaller common algorithms e.g. a sort routine may be part of some higher-level algorithm, the sort-routine may be optimised independently of the higher-level routine.
Check out: http://en.wikipedia.org/wiki/Compiler_optimization
Parent
Re: (Score:2, Informative)
What things can a compiler do to your code to 'optimize' it for you?
The correct answer to this question is... it depends. No matter how advanced your compiler is it can't select the correct algorithm for you. If you're ordering your lists with a bubble sort instead of some kind of btree, there's nothing the compiler can do to help you except deliver the best O(n^2) sort it can. A truly artistic programmer can transcend all of the optimizations this compiler might achieve, by several orders of magnitude.
But if you're the kind of code geek that Microsoft hires, yeah, you
Re: (Score:3)
Even faster is the closed form solution:
http://mathworld.wolfram.com/BinetsFibonacciNumberFormula.html [wolfram.com]
I for one? (Score:3, Funny)
Who would've guessed a compiler would become the first program to achieve sentience ;P
It will surely, er, program our programs to kill us.
Re:I for one? (Score:5, Funny)
It will surely, er, program our programs to kill us.
No, it'll just optimize out all emergency stop and safety routines. Humans inevitably die anyway so there is no point in slowing down the code to prevent it.
Parent
Re: (Score:3, Funny)
Humans inevitably die anyway so there is no point in slowing down the code to prevent it.
In fact, think of how much of an optimization that is! I mean, suppose people were killed by our robot overloads at 25. That's 1/3 of 75 years old; that's a 3x improvement in the speed we go through our life! In a world where a 20% improvement in speed for a new optimization is very impressive, 3x is just great!
Will it fix Crysis and Vangaurd? (Score:2, Funny)
So that the games run on a normal machine?
Long Compile time - Long time to market ? (Score:2, Funny)
will they add clippy? (Score:2, Insightful)
seriously... this post talk about machine learning optimization, will it be like "more stuff You compile, better luck with resulting machine code" ?
It's like a new GPS navigation software thats not only capable of route optimization but also capable of destination suggestions. "It sounds like You're going to a grocery store to buy pizza... there's a pizza hut round the corner!"
Gentoo (Score:2)
So if I'd compile a Linux from scratch with this new compiler, everything speeds up by 18% on average? That would be quite impressive, and possibly the best justification for Gentoo. Might be nice for my aging notebook...
Ricer? (Score:2, Funny)
Summary is extremely misleading (Score:4, Informative)
>The compiler is expected to significantly reduce time-to-market of new software,
>because lengthy manual optimization can now be carried out by the compiler.
The time to *make a new compiler* for a certain processor is reduced, and the
process of figuring which optimizations are should be in the compiler for that architecture
is automated.
This is for the kind of research where they attempt to make many specialized processors
on a single chip instead of a general monolithic one. In this case, you need many
compilers and tuning those is important. It's the time optimizing THOSE that is lowered,
not the one of writing the software that is compiled itself.
I see no real relevance to the "normal" desktop situation on that website.
Re: (Score:3, Insightful)
I always thought that testing and debugging were the lengthy manual steps
Not if you wrote the code well! ;-)
Seriously, as someone who's been doing this a long time (since '78, professionally since '82), and who is still at the top of his game, I nowadays spend *very* little time on debugging since it works first time - even the complicated multi-threaded, mutex type of stuff which is what I primarily write nowadays. After a while you stop making mistakes!
But, anyways, it seems the main target for this adapt