[GRASS-dev] --with-opencl without a GPU

Hi,

If I wanted to build G7 --with-opencl on a machine with a non-Intel/nVidia/AMD GPU would everything still build and work fine? I only have Intel/nVidia machines so can't check this myself reliably I guess.

Would r.sun utilize more than 1 CPU (I mean once the GSoC OpenCL r.sun stuff is merged into to G7 trunk) on such a machine?

Are the dependencies only the OpenCL headers and the libcl or something more?

I'll update the WiKi [1] if you can clarify this for me, please.

[1] http://grasswiki.osgeo.org/wiki/OpenCL

Maciek

--
Maciej Sieczka
http://www.sieczka.org

Maciek wrote:

If I wanted to build G7 --with-opencl on a machine with a
non-Intel/nVidia/AMD GPU would everything still build and work fine?

What other manufacturer(s) of GPUs are still in business?
The short answer is yes, as long as they provide a libOpenCL.so library
and C header files to go along with it.

I only have Intel/nVidia machines so can't check this myself reliably I guess.

note that the intel i7 Ivy Bridge HD4000 driver only supplies OpenCL
multi-CPU core support for Linux. The same chip has a GPU driver for
MS Windows and I think Mac OSX. On Linux + Intel graphics you need
a Xeon chip for driver GPU support currently.

nVidia have shipped OpenCL support standard with their proprietary
Linux driver for a while now, although they advertise more about the
CUDA side of things.

Would r.sun utilize more than 1 CPU (I mean once the GSoC OpenCL r.sun
stuff is merged into to G7 trunk) on such a machine?

I hope so, for Linux Ivy Bridge chips that's all you'd be able to get,
but running multi-core GPCPU is still a time win. I'm not sure if OpenCL
lets you do GPU+CPU or you have to choose one or the other, or if it
can do both at the same time if the CPU memory array size gets limited
by the GPU memory limit.

Are the dependencies only the OpenCL headers and the libcl or something
more?

I think that's it, but I'm still learning.

thanks,
Hamish

I hope so, for Linux Ivy Bridge chips that's all you'd be able to get,
but running multi-core GPCPU is still a time win. I'm not sure if OpenCL
lets you do GPU+CPU or you have to choose one or the other, or if it
can do both at the same time if the CPU memory array size gets limited
by the GPU memory limit.

When coding it, you can specify the type of host (GPU, CPU, FPGA, etc)
or you can set up a small code assessing what is up and running at the
moment (say 2 GPUs, 2 CPU), in that case you can set the code to use
the resources devices (here there are 4 devices available). You can
partition your code in sections and let those sections run on
different devices as found in the initial test. You can also partition
your data the same way throughout the available devices.

Short answer: Yes can use GPU+CPU, but you have to think about it and
code it specifically

I forgot to mention I'm asking this in the context of an Arch G7 PKGBUILD script I maintain on AUR.

W dniu 26.06.2013 02:24, Hamish pisze:

Maciek wrote:

If I wanted to build G7 --with-opencl on a machine with a
non-Intel/nVidia/AMD GPU would everything still build and work fine?

What other manufacturer(s) of GPUs are still in business?

Those 3 rule at the moment, true. Still, e.g. S3 was around till 2010 or so, and there is older hardware still in use around for sure. Trying to think future-proof, too - maybe some new players will come.

The short answer is yes, as long as they provide a libOpenCL.so library
and C header files to go along with it.

As I can't be sure this would always be the case, I guess I shouldn't enable --with-opencl by default.

I only have Intel/nVidia machines so can't check this myself reliably I guess.

note that the intel i7 Ivy Bridge HD4000 driver only supplies OpenCL
multi-CPU core support for Linux. The same chip has a GPU driver for
MS Windows and I think Mac OSX. On Linux + Intel graphics you need
a Xeon chip for driver GPU support currently.

nVidia have shipped OpenCL support standard with their proprietary
Linux driver for a while now, although they advertise more about the
CUDA side of things.

Would r.sun utilize more than 1 CPU (I mean once the GSoC OpenCL r.sun
stuff is merged into to G7 trunk) on such a machine?

I hope so, for Linux Ivy Bridge chips that's all you'd be able to get,
but running multi-core GPCPU is still a time win. I'm not sure if OpenCL
lets you do GPU+CPU or you have to choose one or the other, or if it
can do both at the same time if the CPU memory array size gets limited
by the GPU memory limit.

Are the dependencies only the OpenCL headers and the libcl or something
more?

I think that's it, but I'm still learning.

Thanks for sharing this. Unless anyone has more input I'll try to put this information together on the GRASS WiKi in the coming days.

Maciek

--
Maciej Sieczka
http://www.sieczka.org

W dniu 26.06.2013 18:08, Maciej Sieczka pisze:

Thanks for sharing this. Unless anyone has more input I'll try to put
this information together on the GRASS WiKi in the coming days.

I hope I got it right: http://grasswiki.osgeo.org/grass-wiki/index.php?title=GPU&action=historysubmit&diff=19076&oldid=18745.

Maciek

--
Maciej Sieczka
http://www.sieczka.org

Maciek pisze:

Thanks for sharing this. Unless anyone has more input I'll try to put
this information together on the GRASS WiKi in the coming days.

I hope I got it right:
http://grasswiki.osgeo.org/grass-wiki/index.php?title=GPU&action=historysubmit&diff=19076&oldid=18745.

my only small comments would be *.so library names are linux-specific (well maybe FreeBSD too, I'm not sure), the exact library name is different on Mac (but automatically installed there so users don't have to worry about it), and that "soon"* the FOSS video drivers will have OpenCL support on linux, and it's good to future-proof the wording used on the wiki. :slight_smile:
[*] http://dri.freedesktop.org/wiki/GalliumCompute/

"Linux + Intel graphics you need a Xeon chip for driver GPU support
currently."

not really relevant to the wiki page until we see a GRASS + OpenCL build for Windows (..could happen?), but the funny thing is that for MS Windows the opposite is true, only GPU support for the i7 chip & not Xeon. Performance is probably not so great for the Ivy Bridge chips, but it's good as an already-there learning platform.

thanks,
Hamish