Make GPU examples cmdstan 2.20.0

Hey all -

I’m trying to run the examples to make sure the GPU stuff is working. I’m running cmdstan 2.20.0 and the only make example is bernoulli.

Is this a mistake? Should cmdstand 2.20.0 or the current version be updated so that we can test out the GPU stuff?

I ran ./runTests.py test/unit -f opencl and the tests pass with flying colors. Does this mean the GPU should be good to go, even if I can’t run this test file?

Andre

EDIT: totes not G2G, just ran a model and the compilation is failing, but that’s cool I can figure it out.

Sorry which examples are you referencing?

The ones here: https://github.com/stan-dev/math/wiki/OpenCL-GPU-Routines

examples/GPU/gp3, but the only compilation examples are the bernoulli ones.

The bernoulli ones: https://github.com/stan-dev/cmdstan/tree/develop/examples/

The compilation fails, but just because I haven’t linked my amd/cuda library, whatever it is I need to point stan to

yeah, another n00b question. How do I find the correct opencl lib? The one that has to go here:

LDFLAGS_OPENCL= -L"$(CUDA_PATH)\lib\x64" -lOpenCL

The $(CUDA_PATH).

Here’s my lspci output, I have a GPU:

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (rev 07)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 07)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
...

there’s the GPU on line 4.

And then I’m setting the bash variable able to my cuda’s lib64 directory:

/usr/local/cuda/lib64.

I think this is the right place, but it’s still not compiling.
How do I find the appropriate directory?

here’s my clinfo -l :

Platform #0: Clover
 `-- Device #0: AMD VERDE (DRM 2.50.0, 5.3.11-200.fc30.x86_64, LLVM 8.0.0)
Platform #1: Portable Computing Language
 `-- Device #0: pthread-Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz

And here’s my make local:

STAN_OPENCL=true
OPENCL_DEVICE_ID=0
OPENCL_PLATFORM_ID=0
CC = g++
LDFLAGS_OPENCL= -L"$/usr/local/cuda/lib64" -lOpenCL

the openCL stuff is here:

     27096 Aug 26  2018 libOpenCL.so.1.1
    16 Aug 26  2018 libOpenCL.so.1 -> libOpenCL.so.1.1
      14 Aug 26  2018 libOpenCL.so -> libOpenCL.so.1

yo forget it. I removed the $ at the beginning

OK, no idea what this means:

terminate called after throwing an instance of 'std::system_error'
  what():  compile_kernel: add input.cl:29:252: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
input.cl:29:272: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
input.cl:29:292: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
input.cl:29:459: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
input.cl:29:598: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
: Unknown error -11

any ideas? thanks for the help.

pinging @rok_cesnovar I don’t have access to a windows computer and Rok wrote the setup docs for Windows

Also I’m not sure cuda’s OpenCL will work with the AMD or Intel devices you have available

http://mc-stan.org/math/opencl_support.html

For windows AMD you have to use the old SDK. AMD took it off of their site for windows (linux users can use ROCm) @rok_cesnovar do you know a place to get that? I found a site but it’s not AMD affiliated so I don’t want to post it

You can get the windows one for intel from below

This is linux. There’s probably a mistake I’m making in my setup then.

On Linux you dont need to set the path to the OpenCL lib. If clinfo works you are all set.

1 Like

Ah, for linux you should be able to ignore the LDFLAGS_OPENCL line. We should probably highlight that in the docs

http://mc-stan.org/math/opencl_support.html

1 Like

Can you give some more info on what is the GPU you are using? 'double' requires cl_khr_fp64 extension to be enabled smells a bit like its an older GPU with no native double support, which seems a bit weird.

Yeah I’m pretty sure that’s the issue, idt the cape verde gpu supports doubles

Just tried this and my cmdstan build failed.

Weak, any way I can get it to work without a massive amount of work?

I would use your intel device