Intel Developing 'Data Parallel C++' As Part of OneAPI Initiative (phoronix.com) 81
Intel's One API project aims "to simplify application development across diverse computing architectures."
Now an anonymous reader quotes Phoronix: Intel announced an interesting development in their oneAPI initiative: they are developing a new programming language/dialect. Intel originally began talking about oneAPI last December for optimizing code across CPUs / GPUs / FPGAs and as part of "no transistor left behind...."
The article then acknowledges "the SYCL single-source C++ programming standard from The Khronos Group we've expected Intel to use as their basis for oneAPI," before noting Intel is going "a bit beyond..."
"Data Parallel C++ (DPC++) is their 'new direct programming language' aiming to be an open, cross-industry standard and based on C++ and incorporating SYCL."
Now an anonymous reader quotes Phoronix: Intel announced an interesting development in their oneAPI initiative: they are developing a new programming language/dialect. Intel originally began talking about oneAPI last December for optimizing code across CPUs / GPUs / FPGAs and as part of "no transistor left behind...."
The article then acknowledges "the SYCL single-source C++ programming standard from The Khronos Group we've expected Intel to use as their basis for oneAPI," before noting Intel is going "a bit beyond..."
"Data Parallel C++ (DPC++) is their 'new direct programming language' aiming to be an open, cross-industry standard and based on C++ and incorporating SYCL."
Not bad (Score:2, Insightful)
Despite various stumbles in the recent years, Intel is still playing some of their cards right. In this case, we'll have to see if other industry players go for it to determine whether it's useful or not.
Re:Reinventing Rust (Score:4, Insightful)
Re: Reinventing Rust (Score:1)
Sadly, you responded to a subtle and clasic troll on slashdot, who always spells "mozilla" in their new silly way and makes spurious claims to mock some I guess supposed group of rust fanboys.
Anyway, your post has good content, and it is easy to overestimate slashdot commenter-trolls because slashdot itself spans from awful to great.
Re: (Score:3)
Shouldn't that be C==? (Score:5, Funny)
C== would be a more proper name for a parallel language...
Re:Shouldn't that be C==? (Score:4, Insightful)
The industry doesn't need another version of c++.
Actually, we do.
Back in the 1970s, C was designed as a low level language for the computers of that time. It fit the model of computation well, and became popular.
But C (and C++) became too popular. Instead of making the language fit the hardware, we started designing the hardware to fit the language. This led to complicated mechanism like superscalar execution and cache-coherency protocols that sucked up enormous quantities of transistors to make modern CPUs provide an interface to C that looked like the simple CPUs of the 1970s.
Other languages don't fix the problem. They aren't popular enough to impose their model on CPU designers, so they use the same "computational model" as C/C++.
We need a low level "hardware aware" language, that can specify instruction level parallelism directly, instead of expecting the hardware to clean up the mess at runtime. We need a language that "knows" about the caches, and allows the programmer to optimize their use. Threading should be built-in.
Of course, most people shouldn't be programming in this low level language, just like most coders today shouldn't be writing business apps in C. But at the lowest level, programmers need direct access to the capabilities of the CPU, and C no longer provides that.
Once we fix C, the hardware will start changing it fit it. All those transistors can be used more productively, and clock speeds can start improving again.
Re: (Score:2)
I would like to hear see some specific proposals.
Re: (Score:2)
Back in the 1970s, C was designed as a low level language for the computers of that time. It fit the model of computation well, and became popular.
We need a low level "hardware aware" language, that can specify instruction level parallelism directly, instead of expecting the hardware to clean up the mess at runtime.
I'm probably sounding like a broken record, as I've talked about this for years, and how languages like Fortran already solved this in the early 1990s. Fortran (90 and up) has native vector and matrix types, and modern compilers can turn it into SIMD code. It's the natural approach for doing science, as nature doesn't loop over spatial dimensions, for example.
IOW, make the native types more general/high-level, so the compiler has more room for hardware-level optimization. Matrix and vector math may seem
Re: (Score:2)
Back in the 1970s, C was designed as a low level language for the computers of that time. It fit the model of computation well, and became popular.
But C (and C++) became too popular. Instead of making the language fit the hardware, we started designing the hardware to fit the language. This led to complicated mechanism like superscalar execution and cache-coherency protocols that sucked up enormous quantities of transistors to make modern CPUs provide an interface to C that looked like the simple CPUs of the 1970s.
Other languages don't fix the problem. They aren't popular enough to impose their model on CPU designers, so they use the same "computational model" as C/C++.
We need a low level "hardware aware" language, that can specify instruction level parallelism directly, instead of expecting the hardware to clean up the mess at runtime. We need a language that "knows" about the caches, and allows the programmer to optimize their use. Threading should be built-in.
Of course, most people shouldn't be programming in this low level language, just like most coders today shouldn't be writing business apps in C. But at the lowest level, programmers need direct access to the capabilities of the CPU, and C no longer provides that.
Once we fix C, the hardware will start changing it fit it. All those transistors can be used more productively, and clock speeds can start improving again.
So something like the Intel iAPX 432 [wikipedia.org] and IA-64 [wikipedia.org]?
My understanding is that the compiler guys have pushed for exactly what you are suggesting and it has always failed on the compiler side. That is what resulted in Itanium. Bob Colwell had some choice thing to say about this.
The reason is that there is significant parallelism can only be extracted at execution time because it depends on state which is not available to the compiler. Maybe this could be extracted with something like profile guided optimization
Re: (Score:2)
Would you pronounce that, "sequels"?
What do you think python is written in? (Score:5, Insightful)
Thats right, C. Apparently you don't understand that Python is an application programming language, not a systems level language. And to add this functionality to python the C/C++ compiler will need this built in.
"while C++ is in decline"
Yeah, right. Try working in a big corp sometime, not some startup full of hipster bearded ex-graphics designers calling themselves coders because its currently trendy.
"It seems like they risk tying their cart to a dying horse."
That dying horse is pulling along every hipster language out there. If that horse dies they all die too.
Re: (Score:2)
Likewise, if a nation with many supercomputers uses them on pointless climate simulations based off of climate data that has been "adjusted" for political purposes
To be fair, if whats used most in big corporations is the proper measure, then VBA is the most common programming language, by far (its not even a close race.)
Re: (Score:2)
"Most programs are applications, not operating systems! "
Yes, well done. But that wasn't what I said. Do try and get a clue or perhaps just learn to read.
"You may not realize it but Python is the #1 language taught in universities now"
So what? I learnt prolog and ML at university and have never used them once since I graduated. University is not a preparation for the working world, its academia.
"as the dominant language in the industry."
Which particular part of the industry exactly? Just how many places hav
CUDA (Score:2, Interesting)
There have already been a number of attempts at this. You've got OpenMP which is pretty spiffy. Take a normal C++ program, tack on a #pragma parallel for before a for loop and get parallelism more or less for free, well, of easy, data parallel sort.
There's also OpenCL which sort of didn't go very far.
And of course the 500lb gorilla of CUDA. Despite AMD GPUs having piles of RISC processors with wide vector units and documented instruction sets, it's kind of gone nowhere in the GPGPU world compared to nvidia.
Re: (Score:3)
"see: auto_ptr; worst of all worlds memory management"
No sane person has used auto_ptr since C++ 2011 came out. You're a bit behind the times. But I will grant you that C++ is visually a dogs dinner, IMO because of the "we'll make it up as we go along and just keeping adding ever more hacks" approach to its syntactic development.
Re: (Score:1)
Yeah but you're the fuckwit who kept on insisting that arduinos don't run C++, despite using g++ and meeting almost all of the specifications of freestanding implementations according to the actual literal C++ standard.
Naturally when I presented you finally with irrefutable evidence you quietly slunk away, rather than admitting anything.
You know literally nothing about C++.
Re: (Score:2)
Ah bless, are you following me around hoping to score points because you just can't accept you lost an argument? :) Do keep it up, its most amusing!
Re: (Score:1)
because you just can't accept you lost an argument?
I love how you think me showing you the chapter of the C++ standard that demonstrates I'm correct and showing you that it calls g++ (one of the best known C++ compilers) means that you're right that it doesn't use C++.
You are fascinating I'll hand you that. But you are teaching me a lot: I have a much better understanding now about how flat earthers, EM drive believers, and Trump supporters exist. I mean I don't really get at a fundamental level how you a
Re: (Score:2)
I like OpenMP but it is not good for everything. The loops are pretty low overhead but not every parallel program is a loop. The tasking model is nice but the semantics aren't best, and it does not compose well with parallel for loops.
CUDA is nice to program GPUs or any kind of highly regular codes to map on massively parallel vector machines. But try to do any kind of unbalanced parallelism in CUDA and it is kind of a pain. asyncs, futures, or most form of MIMD processing isn't going to map well to CUDA.
C+
Re: (Score:1)
The problem with CUDA is that nVIDIA, in its godly wisdom, decided to keep it closed, patented, and only supported on nVIDIA GPUs. That means it will never be used for anything else. And while it's quite popular and useful, and relatively easy to use - it is still limited to that niche and cannot expand further.
oneAPI? You mean POSIX? (Score:1)
Granted, POSIX could use a little upgrade to suit today's world (and I don't mean any of that i/web cancer), but no need to reinvent the wheel!
(That would be the WhatWG's job. Literally.)
Helps AMD more (Score:2)
With Ryzen 12 core 24 thread CPUs mere weeks away all this would do is create code that works better on AMD hardware
Re: (Score:2)
I'm sure Intel will find ways to make it work better on Intel CPUs. They always do.
They will make it work well on CPUs where they are basically competent (if unscrupulous) and not on GPUs where AMD is competent, and they aren't. It will get fixed eventually, but not until after Intel has milked it for a while.
Re: (Score:2)
You seem to have reading comprehension problems.
Intel may be behind AMD in CPUs, but they are way further behind them in GPUs.
Re: (Score:2)
Re: (Score:2)
Intel will be joining the discrete GPU market this January as the lack of competition make this too juicy of a profit margin to ignore. However, Intel is at a serious disadvantage when it comes to fabrication and is almost 5 years behind Samsung and TMG still at 14 nm so we will see.
Re: (Score:2)
Then name two, please.
Re: (Score:1)
Difference AC here:
ArrayFire (free as in free beer, MIT-like license)... ... and I'll be pleased to know a second.
AF is great, using CPU/GPU with CUDA or openCL through the same interface. I've used it with julia and python.
So this is like... (Score:3)
So this is like C with Goroutines? Help me here.
Re: (Score:2)
What to say when you've got nothing to say. Sign of the times.
Re: (Score:2)
Google goroutines.
Nope, not unless they collaborated. (Score:2)
Re: (Score:2)