| Q&A |
David
Bucciarelli
OpenCL, SmallptGPU, SmallLuxGPU.
Feb. 2010 |
| |
“Rendering
engines can not ignore GPU computing. This doesn't mean we
will stop using our CPUs. Rendering engines will have instead
to take advantage of both worlds. It is wrong to look for
a CPU Vs GPU "war"; we need instead to take advantage
of the new CPU+GPU scenario.”
|
| |
|
| Q1 |
Please
give a brief description of your activities in the field of
3D. |
| A1 |
I
wrote my first program for drawing a 3D wireframe model on a
Commodore VIC20 when I was 11. I love about every aspect of
computer graphics since than. My first work was in the the field
of VirtualReality at one of robotic laboratories of "Scuola
Superiore S.Anna" at Pisa University.
In the same period I started work also on my first open source
project: a Mesa (i.e. OpenGL) driver based on Glide for 3Dfx
cards. It was a successful project and it was used in many
applications including the Linux version of Quake. I remember
that period with great pleasure and reading "David
Bucciarelli wrote and maintained the 3Dfx Glide driver. Thousands
of Linux/Quake players thank David!" still make me
smile.
I'm actually working in the field of telecommunications and
I'm one of the developer at http://www.luxrender.net
in my free time. Since the release of OpenCL, I have developed
few small demo like SmallptGPU
and SmallLuxGPU.
|
| |
|
| Q2 |
You
are famous for your works on GPU computing. What makes GPU interesting
for other purpose than rasterization (z-buffer rendering)? |
| A2 |
Their
unmatched floating point performance/price ratio. Modern GPUs
can offer unparalleled floating point performances at a low
price thanks to the high GPU demand in the entertainment market. |
| |
|
| Q3 |
SmallptCPU
and SmallptGPU are two programs that help comparing the performances
of CPU and GPU. At the same given quality what is the benefit
of using a GPU for raytracing? |
| A3 |
Raytracing
has ever been one of the most power angry application and
one of the most easy to parallelize too. GPUs offer both high
performances and require an high level of parallelism. It
looks like a perfect marriage. |
| |
|
| Q4 |
Are
GPU even faster than multi-core CPU? |
| A4 |
Yes
and no. There are application fields where GPGPUs [http://www.gpgpu.org]
can solve problems several time faster than any CPU. But there
also problems where CPUs are several time faster than GPUs.
GPUs use a quite peculiar way to work: they are not particular
fast to execute a task however they can perform a same task
on thousand of data at the same time (i.e. SIMD architecture).
GPU is going to be faster than a multi-core CPU if and only
if you can find a way to express the solution to your problem
in term of single operations to apply to multiple data (i.e.
data parallel model). |
| |
|
| Q5 |
You
have also developed SmallLuxGPU : it gives the opportunity of
rendering 3D scenes using GPU ressources. Are GPU the future
of rendering engine? What gain of time can 3D artist expect?
|
| A5 |
For
sure, rendering engines can not ignore GPU computing. This
doesn't mean we will stop using our CPUs. Rendering engines
will have instead to take advantage of both worlds. It is
wrong to look for a CPU Vs GPU "war"; we need instead
to take advantage of the new CPU+GPU scenario.
This will great improve the tools available for 3D artists
by increasing the level of interactivity , the responsiveness
and shortening the rendering times by an order of magnitude.
|
| |
|
| Q6 |
As
a developer, what do you think of GPU programming. It's considering
to be specific and hard to develop on this platform? |
| A6 |
It
is extremely challenging but highly rewarding too. We are
still in an early stage of the development of the drivers
and tools for GPU computing. I'm very often facing compiler
crashes, driver bugs and interoperability problems between
different vendors.
However the reward is an level of performance never seen before:
it is worth the effort. |
| |
|
| Q7 |
Most
of today's projects of GPU rendering is based on Cuda (vRay,
mental ray), is OpenCL slower? What is your point of view about
OpenCL vs Cuda? AMD vs nVidia in the field of GPU computing?
|
| A7 |
OpenCL
is younger than CUDA and, as any technology in an early stage
of its development, suffers of typical problems like driver
bugs, missing tools, not optimized implementations, etc. However
CUDA is a proprietary API. A proprietary API is an advantage
for the vendor, not for the users or developers.
If I have an option I will always choose an open standard,
both as user and as developer. NVIDIA has been a precursor
in the field GPGPUs. New Fermi architecture has been presented
more like new GPU computing processor than a GPU for the 3D
entertainment market.
However Fermi is a bit late while AMD HD5xx family is available
since September. I have both AMD and NVIDIA GPUs and it looks
like AMD is putting more effort on OpenCL support too. |
| |
|
| Q8 |
nVidia
is announcing that CUDA can speed up C++ applications up to
x100? Do you believe it's true? |
| A8 |
MandelGPU
[http://davibu.interfree.it/opencl/mandelgpu/mandelGPU.html]
has been my very first test with OpenCL and it was running 61
time faster on my GPU than my CPU. However there are other problems
where a CPU can easy outperform GPU too. Developing an application
that feet the requirement of a GPU architecture is hard, complex
and time consuming (i.e. expansive). GPUs are not the answer
to all computational problems however they really shine on some.
|
| |
|
| Q9 |
What
are your next projects in the field of 3D? |
| A9 |
LuxrenderGPU
:
- http://www.luxrender.net/wiki/index.php?title=Luxrender_and_OpenCL#LuxrenderGPU
- http://www.luxrender.net/wiki/index.php?title=Image:LuxrenderGPU-first-rendering.jpg
and
Luxrays
- http://www.luxrender.net/wiki/index.php?title=LuxRays.
I want to move from the days of experiments and demos to applications
useful on the field. |
| |
|
| |
|