Helloworld runs on GForce but not on Intel Core device

[Old posts from the commercial version of ArrayFire] Discussion of ArrayFire using CUDA or OpenCL.

Moderator: pavanky

Helloworld runs on GForce but not on Intel Core device

Postby danmoese » Thu Jan 09, 2014 4:28 pm

Hi,

I am trying to run the helloworld sample shipped with the installer of ArrayFire 2.0 and encounter some problems occuring at runtime.

My configuration looks like this

- Windows 7 64-bit
- GForce graphics Adapter with OpenCL 1.1
- Intel 3rd Generation CPU with openCl 1.2
- Intel HD 2500 graphics Adapter with openCL 1.2

So I tried to get the helloworld running on each device.

1. I tried the GForce, where everything went fine and the example terminated properly.

2. I tried the integrated Intel graphics adapter and got the following error message:

____________________________________________________________________________________________________
BUILD LOG
************************************************
:102:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, sub[i]); // look up in buffer
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^
:123:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, sub[i]); // look up in buffer
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^
:127:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, dims[i] * id + sub[i]); // ind
ex into tile
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^
:131:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, id); // look up tile
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^

error: front end compiler failed build.
************************************************
src/opencl/init.cpp:406: Failed to build program
[/b]
________________________________________________________________________________________________


3. I tried the CPU device and got this error message box:

________________________________________________________________________________________________
Runtime Error!

Program: C:\....
R6025
- pure virtual function call

________________________________________________________________________________________________

Is there a reason why the program would not run on my Intel devices?

Does anybody know how I can fix this?

Thanks,

Daniel
danmoese
 
Posts: 4
Joined: Thu Jan 09, 2014 7:53 am

Re: Helloworld runs on GForce but not on Intel Core device

Postby shehzan » Thu Jan 09, 2014 10:11 pm

Hi Daniel

Can you please attach a screenshot of the output when running helloworld?
----
Shehzan
Developer
AccelerEyes
User avatar
shehzan
 
Posts: 121
Joined: Tue Feb 12, 2013 7:20 pm

Re: Helloworld runs on GForce but not on Intel Core device

Postby danmoese » Fri Jan 10, 2014 3:01 am

Hi Shehzan,

thanks for the quick reply!

This is the output screen I obtain when selecting the Intel HD graphics device:
_________________________________________________________________________________
here.
in get host id
x_flexlm_gethostid() adding ID 04A15188E3E1
ArrayFire v2.0 (OpenCL, 64-bit Windows, build 56d66b5)
License: Standalone (C:\Users\Schatzi\arrayfire.lic)
License expires in 4 days.
Addons: MGL4, DLA, SLA
Platform: Intel(R) OpenCL, Driver: 10.18.10.3345
0 : GeForce GT 430, 1023 MB, OpenCL Version: 1.1
[1]: Intel(R) HD Graphics 2500, 1624 MB, OpenCL Version: 1.2
2 : Intel(R) Core(TM) i5-3450S CPU @ 2.80GHz, 8054 MB, OpenCL Version: 1.2
Compute Device: [1]


create a 5-by-3 matrix of random floats on the GPU
A [5 3] =
0.4107 0.0081 0.6600
0.8224 0.3775 0.0764
0.9518 0.3027 0.0901
0.1794 0.6456 0.5933
0.4198 0.5591 0.1098

element-wise arithmetic
B [5 3] =
0.4993 0.1081 0.7131
0.8328 0.4686 0.1763
0.9145 0.3981 0.1900
0.2784 0.7017 0.6591
0.5076 0.6304 0.2096

Fourier transform the result
C [5 3] =
3.0325 + 0.0000i 2.3068 + 0.0000i 1.9481 + 0.0000i
-0.0516 - 0.6831i -0.4420 + 0.3323i 0.1455 + 0.3074i
-0.2165 + 0.4138i -0.4412 - 0.1936i 0.6632 - 0.4266i
-0.2165 - 0.4138i -0.4412 + 0.1936i 0.6632 + 0.4266i
-0.0516 + 0.6831i -0.4420 - 0.3323i 0.1455 - 0.3074i

grab last row
c [1 3] =

BUILD LOG
************************************************
:102:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, sub[i]); // look up in buffer
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^
:123:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, sub[i]); // look up in buffer
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^
:127:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, dims[i] * id + sub[i]); // ind
ex into tile
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^
:131:22: error: use of type 'double' requires cl_khr_fp64 extension to be enable
d
sub[i] = MEM_ACCESS(subs[i].d.gpu.tp, id); // look up tile
^
:56:34: note: expanded from macro 'MEM_ACCESS'
(unsigned)((__global const double *)g)[index]) - base)
^

error: front end compiler failed build.
************************************************
src/opencl/init.cpp:406: Failed to build program
_________________________________________________________________________

I assume the screen for one device is sufficient!?

Thanks again,

Daniel
danmoese
 
Posts: 4
Joined: Thu Jan 09, 2014 7:53 am

Re: Helloworld runs on GForce but not on Intel Core device

Postby shehzan » Fri Jan 10, 2014 12:39 pm

Hi

The opencl implementation requires double precision support for indexing which does not seem to be available on the Intel graphics.
Can you let me know the results of running the program on the Intel CPU (device 2)?
----
Shehzan
Developer
AccelerEyes
User avatar
shehzan
 
Posts: 121
Joined: Tue Feb 12, 2013 7:20 pm

Re: Helloworld runs on GForce but not on Intel Core device

Postby danmoese » Fri Jan 10, 2014 2:14 pm

Shehzan,

the CPU appears to compute correctly:

__________________________________________________________________
here.
in get host id
x_flexlm_gethostid() adding ID 04A15188E3E1
ArrayFire v2.0 (OpenCL, 64-bit Windows, build 56d66b5)
License: Standalone (C:\Users\Schatzi\arrayfire.lic)
License expires in 4 days.
Addons: MGL4, DLA, SLA
Platform: Intel(R) OpenCL, Driver: 3.0.1.10878
0 : GeForce GT 430, 1023 MB, OpenCL Version: 1.1
1 : Intel(R) HD Graphics 2500, 1624 MB, OpenCL Version: 1.2
[2]: Intel(R) Core(TM) i5-3450S CPU @ 2.80GHz, 8054 MB, OpenCL Version: 1.2
Compute Device: [2]


create a 5-by-3 matrix of random floats on the GPU
A [5 3] =
0.4107 0.0081 0.6600
0.8224 0.3775 0.0764
0.9518 0.3027 0.0901
0.1794 0.6456 0.5933
0.4198 0.5591 0.1098

element-wise arithmetic
B [5 3] =
0.4993 0.1081 0.7131
0.8328 0.4686 0.1763
0.9145 0.3981 0.1900
0.2784 0.7017 0.6591
0.5076 0.6304 0.2096

Fourier transform the result
C [5 3] =
3.0325 + 0.0000i 2.3068 + 0.0000i 1.9481 + 0.0000i
-0.0516 - 0.6831i -0.4420 + 0.3323i 0.1455 + 0.3074i
-0.2165 + 0.4138i -0.4412 - 0.1936i 0.6632 - 0.4266i
-0.2165 - 0.4138i -0.4412 + 0.1936i 0.6632 + 0.4266i
-0.0516 + 0.6831i -0.4420 - 0.3323i 0.1455 - 0.3074i

grab last row
c [1 3] =
-0.0516 + 0.6831i -0.4420 - 0.3323i 0.1455 - 0.3074i

zero out every other column
negate the first three elements of middle column
B [5 3] =
0.0000 -0.1081 0.0000
0.0000 -0.4686 0.0000
0.0000 -0.3981 0.0000
0.0000 0.7017 0.0000
0.0000 0.6304 0.0000

create 2-by-3 matrix from host data
D [2 3] =
1.0000 3.0000 5.0000
2.0000 4.0000 6.0000

copy last column onto first
D [2 3] =
5.0000 3.0000 5.0000
6.0000 4.0000 6.0000

hit [enter]...
_____________________________________________________________________________
However, I get a Microsoft Visual C++ Runtime Librar error at the end (shown in a Message Box):

R6025
- pure virtual function call.

So, as far as I understand the Intel GPU and ArrayFire are most likely not compatible?

Thanks,

Daniel
danmoese
 
Posts: 4
Joined: Thu Jan 09, 2014 7:53 am

Re: Helloworld runs on GForce but not on Intel Core device

Postby shehzan » Fri Jan 10, 2014 4:55 pm

Yes, it very likely it does not work in its current form on the Intel Graphics processor.
We will investigate this further and try to solve it.
----
Shehzan
Developer
AccelerEyes
User avatar
shehzan
 
Posts: 121
Joined: Tue Feb 12, 2013 7:20 pm


Return to [archive-commercial] Programming & Development with ArrayFire

cron