-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
single and double floating-point numbers are confused #98
Comments
Thanks for reporting this. I had forgotten that support for FP64 on the device is optional in SYCL just as it is in OpenCL. In the OpenCL code, we have to check that the double version will work. I've added a SYCL 1.2.1 solution to the current version of the code in #100 in the SYCL 2020 makes this check a bit nicer, so I'll update #77 with a similar check ready for when we merge that in. |
This will resolve #98 in the future SYCL 2020 version.
Sorry, the issue may not be really fixed. ./sycl-stream --float --device device_id error :double type is not supported on this platform error :double type is not supported on this platform |
Sorry, I didn't check it before you closed the issue. |
It auto-closed when I merged the PR, sorry! |
Thanks for testing @zjin-lcf. I think the problem is now that both I need to double check the SYCL specifications to find out if there is anything we can do in application code at compile time; but I suspect not. |
@tom91136 also suggested that you could try to enable FP64 emulation on the DevCloud Xe GPUs with the following environment variables:
This should silence the compiler issues and run the |
Thank you for your suggestion. Running the program shows the message : Validation failed on sum. Error 3.64297e-06 It seems that the option --arraysize does not change the number of array elements. Could you reproduce that ? Thanks |
Issue #20 summarises the problems with the dot product kernel and single precision. There isn't a good solution that we've found. |
Okay. I assume that the error bounds are different for single precision and double precision. People may just care about bandwidth for the benchmark, though. |
Same error bounds (1.0E-8), but that might be a good way to account for the difference. I agree it's off-putting to have an error about correct values. I'll make a note in #20 with this suggestion. Thanks! |
~/BabelStream/build$ ./sycl-stream --float --device 2
BabelStream
Version: 3.4
Implementation: SYCL
Running kernels 100 times
Precision: float
Array size: 134.2 MB (=0.1 GB)
Total size: 402.7 MB (=0.4 GB)
Using SYCL device Intel(R) Iris(R) Xe Graphics
terminate called after throwing an instance of 'cl::sycl::compile_program_error'
what(): The program was built for 1 devices
Build program log for 'Intel(R) Iris(R) Xe Graphics':
error :double type is not supported on this platform
in kernel: 'typeinfo name for sycl_kernels::copy'
error: backend compiler failed build.
Thanks
The text was updated successfully, but these errors were encountered: