Yeah, good evening everyone.
Hopefully everybody is still awake.
So I already got introduced
here, quite well.
Just to say, I'm working
actually in the graphics group,
but also I'm dangerous
enough to also work with CPUs
and what I want to tell you about today
is actually in my other role
which is being part of the HSA Foundation
and being the work group chair
for the system architecture.
So HSA or Heterogeneous
System Architecture,
is something that you
may not have heard about
but I think after the lightning talk,
might now know about it
and hopefully be more interested.
So where is Compute used today?
It's pretty much everywhere, right?
Being able to do computations faster
with less power is pretty much everywhere
where you put in software.
So if you see from some old smartphones
or high performance computers, et cetera,
each one has heterogeneous designs
where you have an accelerator
with general purpose CPUs in there.
And so this is already here.
The problem is how to
program these things?
Hydra is there.
You have TPU course, GPU course
other accelerators in
there that do the work
and that connect you to memory,
what happened here?
There we go.
And this is all done on
the system platform level.
What HSA is about is making it much easier
for the software to actually
take advantage of this
because it's really hard
to program otherwise.
At least today.
So the early focus on
the HSA architecture was
on GPUs but it can actually deal
with a lot of other
computations accelerators.
And this is DSPs, FPGAs,
and whatever else you can imagine
in your software to be usable.
How do we make it better?
So we make it easier to program,
it's pretty much one source for all.
It's easier to optimize
because you only have to deal
with one source code,
with one system in essence.
And ultimately you will
get higher performance
and you will get lower power for it.
So, there's a lot of questions about
what is OpenCL and HSA and whatnot.
So it's not really integral
or mutually exclusive,
it's about OpenCL being a good,
or HSA being a good foundation for OpenCL.
Not that they are in any
way mutually exclusive.
HSA is focused mostly on
standards on the hardware side,
or on the platform side
but with some runtime API to do resources
but not as a runtime API like OpenCL
where you actually have to use
the API to dispatch things.
And it supports many more languages
than like a C style or C++
does for some implementations of PI
from other high level languages
that directly target the hardware.
But OpenCL itself actually benefits
from a rich foundation
that the platform provides.
It just is typically a
little bit different program.
So what do we do?
We have created a platform architecture
that integrates all the different types
of accelerators GPU, CPU,
and everything in there.
It's focused on Compute
but other accelerators can play in there.
It doesn't dictate any
particular architecture,
many different
architectures are available.
And it provides a robust
foundation for programming.
It empowers mainstream programmers,
making it easier to write code
in the high level languages.
It supports a broad range of platforms,
and pretty much a lot of
data parallel runtimes
that you are already familiar with.
But this is not an MDF per se,
there are many other companies involved
as you can see here.
And academia and both software,
hardware companies, et cetera.
But the main foundation that
you are actually dealing with,
HSA actually is what you
are very familiar with,
which is open source
C++ compilers et cetera
or like C++ compilers general.
So CLANG/LLVM has been adapted
and you can pretty much program
both the CPU and the accelerators within
that same framework.
HCC is a flexible,
package that MD has put into opensource
that utilizes a fully C++ 14 compatible
infrastructure that can
target the accelerator.
It supports the H++ API which is
a combination of C++ 14
and C++ AMP structures.
You have a mechanism that you can use,
port very easily CUDA code into it
if you have already some legacy code.
And of course you can also
do the C++ AMP 1.2 standard.
And OpenMP is also supported.
It supports a number of different areas
and of--
(audience laughs)
Yep.
(audience clapping)
What I'm saying is--
