I think the correct steps to use FP64 should be:
1. Query the device using clGetDeviceInfo with CL_DEVICE_EXTENSIONS.
2. Check whether the extension string has "cl_khr_fp64"
3. If so, then you can enable DOUBLE support with
     #pragma OPENCL EXTENSION cl_khr_fp64 : enable
You can refer to the cl_check_double helper function in utests.

Haswell really could use double before, but not a full feature one.
Because of the hardware's limitation, the precision of double is
even lower than the float on PRE-HASWELL platforms. And double
division is also unavailable on HASWELL. So we decide to totally
disable double support on PRE-BDW platforms.

The better user experience is on our plan. We really should give
more useful prompt information and handle compiling error more
decently, rather than a simple ASSERT.


On Thu, Jan 21, 2016 at 06:50:36AM +0000, Song, Ruiling wrote:
> Date: Thu, 21 Jan 2016 06:50:36 +0000
> From: "Song, Ruiling" <ruiling.s...@intel.com>
> To: Paulo Dias <paulo.miguel.d...@gmail.com>, "He, Junyan"
>  <junyan...@intel.com>
> Cc: "beignet@lists.freedesktop.org" <beignet@lists.freedesktop.org>
> Subject: Re: [Beignet] beignet git with llvm 3.7.1 + haswell (gen 7.5)
>  failing
> 
> Yes, I agree with you. But at least as I know haswell hardware does not 
> support double well.
> 
> Hi Junyan,
> 
> Can we handle it graciously? Do you have any idea?
> 
> Thanks!
> Ruiling
> 
> From: Paulo Dias [mailto:paulo.miguel.d...@gmail.com]
> Sent: Wednesday, January 20, 2016 8:37 PM
> To: Song, Ruiling <ruiling.s...@intel.com>
> Cc: beignet@lists.freedesktop.org
> Subject: Re: [Beignet] beignet git with llvm 3.7.1 + haswell (gen 7.5) failing
> 
> it does, but beignet should fail graciously with an error message then, not 
> segfault. and it used to work even with haswell.
> 
> groo@hydra:~/devel/opencl/tools-master$ ./cl-demo 10000 10
> Choose platform:
> [0] Intel
> [1] Mesa
> Enter choice: 0
> Choose device:
> [0] Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile
> Enter choice: 0
> ---------------------------------------------------------------------
> NAME: Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile
> VENDOR: Intel
> PROFILE: FULL_PROFILE
> VERSION: OpenCL 1.2 beignet 1.2
> EXTENSIONS: cl_khr_global_int32_base_atomics 
> cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics 
> cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store 
> cl_khr_image2d_from_buffer cl_khr_spir cl_khr_icd cl_intel_accelerator 
> cl_intel_motion_estimation
> DRIVER_VERSION: 1.2
> 
> Type: GPU
> EXECUTION_CAPABILITIES: Kernel Native
> GLOBAL_MEM_CACHE_TYPE: Read-Write (2)
> CL_DEVICE_LOCAL_MEM_TYPE: Global (2)
> SINGLE_FP_CONFIG: 0x6
> QUEUE_PROPERTIES: 0x2
> 
> VENDOR_ID: 32902
> MAX_COMPUTE_UNITS: 20
> MAX_WORK_ITEM_DIMENSIONS: 3
> MAX_WORK_GROUP_SIZE: 512
> PREFERRED_VECTOR_WIDTH_CHAR: 16
> PREFERRED_VECTOR_WIDTH_SHORT: 8
> PREFERRED_VECTOR_WIDTH_INT: 4
> PREFERRED_VECTOR_WIDTH_LONG: 2
> PREFERRED_VECTOR_WIDTH_FLOAT: 4
> PREFERRED_VECTOR_WIDTH_DOUBLE: 0
> MAX_CLOCK_FREQUENCY: 1000
> ADDRESS_BITS: 32
> MAX_MEM_ALLOC_SIZE: 1610612736
> IMAGE_SUPPORT: 1
> MAX_READ_IMAGE_ARGS: 128
> MAX_WRITE_IMAGE_ARGS: 8
> IMAGE2D_MAX_WIDTH: 8192
> IMAGE2D_MAX_HEIGHT: 8192
> IMAGE3D_MAX_WIDTH: 8192
> IMAGE3D_MAX_HEIGHT: 8192
> IMAGE3D_MAX_DEPTH: 2048
> MAX_SAMPLERS: 16
> MAX_PARAMETER_SIZE: 1024
> MEM_BASE_ADDR_ALIGN: 1024
> MIN_DATA_TYPE_ALIGN_SIZE: 128
> GLOBAL_MEM_CACHELINE_SIZE: 64
> GLOBAL_MEM_CACHE_SIZE: 8192
> GLOBAL_MEM_SIZE: 2147483648
> MAX_CONSTANT_BUFFER_SIZE: 134217728
> MAX_CONSTANT_ARGS: 8
> LOCAL_MEM_SIZE: 65536
> ERROR_CORRECTION_SUPPORT: 0
> PROFILING_TIMER_RESOLUTION: 80
> ENDIAN_LITTLE: 1
> AVAILABLE: 1
> COMPILER_AVAILABLE: 1
> MAX_WORK_GROUP_SIZES: 512 512 512
> ---------------------------------------------------------------------
> ASSERTION FAILED: 0
>   at file 
> /build/beignet-4N2m2_/beignet-1.2.0~git201601200931.13f504c~padoka0/backend/src/backend/gen_encoder.cpp,
>  function virtual void gbe::GenEncoder::handleDouble(gbe::GenEncoder*, 
> uint32_t, gbe::GenRegister, gbe::GenRegister, gbe::GenRegister), line 634
> Trace/breakpoint trap (core dumped)
> 
> | Paulo Dias
> | paulo.miguel.d...@gmail.com<mailto:paulo.miguel.d...@gmail.com>
> 
> Tempora mutantur, nos et mutamur in illis.
> 
> On Mon, Jan 18, 2016 at 12:10 AM, Song, Ruiling 
> <ruiling.s...@intel.com<mailto:ruiling.s...@intel.com>> wrote:
> 
> Haswell does not support double data type, and Beignet does not expose the 
> extension. Looks like cl-demo use double data type?
> 
> 
> 
> Thanks!
> 
> Ruiling
> 
> 
> From: Beignet 
> [mailto:beignet-boun...@lists.freedesktop.org<mailto:beignet-boun...@lists.freedesktop.org>]
>  On Behalf Of Paulo Dias
> Sent: Saturday, January 16, 2016 5:25 AM
> To: beignet@lists.freedesktop.org<mailto:beignet@lists.freedesktop.org>
> Subject: [Beignet] beignet git with llvm 3.7.1 + haswell (gen 7.5) failing
> 
> hi all, beignet git compiled with llvm 3.7.1 will fail in a haswell (gen 7.5).
> 
> trace below:
> 
> groo@hydra:~/devel/opencl/tools-master$ gdb --args cl-demo 10000 10
> GNU gdb (Ubuntu 7.10-1ubuntu2) 7.10
> Copyright (C) 2015 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-linux-gnu".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>.
> Find the GDB manual and other documentation resources online at:
> <http://www.gnu.org/software/gdb/documentation/>.
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from cl-demo...(no debugging symbols found)...done.
> (gdb) run
> Starting program: /home/groo/devel/opencl/tools-master/cl-demo 10000 10
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> [New Thread 0x7fffed4d0700 (LWP 6204)]
> [New Thread 0x7fffecccf700 (LWP 6205)]
> [New Thread 0x7fffec4ce700 (LWP 6206)]
> [New Thread 0x7fffebccd700 (LWP 6207)]
> [New Thread 0x7fffeb4cc700 (LWP 6208)]
> [Thread 0x7fffeb4cc700 (LWP 6208) exited]
> [Thread 0x7fffebccd700 (LWP 6207) exited]
> [Thread 0x7fffec4ce700 (LWP 6206) exited]
> [Thread 0x7fffecccf700 (LWP 6205) exited]
> Choose platform:
> [0] Intel
> [1] Mesa
> Enter choice: 0
> Choose device:
> [0] Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile
> Enter choice: 0
> ---------------------------------------------------------------------
> NAME: Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile
> VENDOR: Intel
> PROFILE: FULL_PROFILE
> VERSION: OpenCL 1.2 beignet 1.2
> EXTENSIONS: cl_khr_global_int32_base_atomics 
> cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics 
> cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store 
> cl_khr_image2d_from_buffer cl_khr_spir cl_khr_icd cl_intel_accelerator 
> cl_intel_motion_estimation
> DRIVER_VERSION: 1.2
> 
> Type: GPU
> EXECUTION_CAPABILITIES: Kernel Native
> GLOBAL_MEM_CACHE_TYPE: Read-Write (2)
> CL_DEVICE_LOCAL_MEM_TYPE: Global (2)
> SINGLE_FP_CONFIG: 0x6
> QUEUE_PROPERTIES: 0x2
> 
> VENDOR_ID: 32902
> MAX_COMPUTE_UNITS: 20
> MAX_WORK_ITEM_DIMENSIONS: 3
> MAX_WORK_GROUP_SIZE: 512
> PREFERRED_VECTOR_WIDTH_CHAR: 16
> PREFERRED_VECTOR_WIDTH_SHORT: 8
> PREFERRED_VECTOR_WIDTH_INT: 4
> PREFERRED_VECTOR_WIDTH_LONG: 2
> PREFERRED_VECTOR_WIDTH_FLOAT: 4
> PREFERRED_VECTOR_WIDTH_DOUBLE: 0
> MAX_CLOCK_FREQUENCY: 1000
> ADDRESS_BITS: 32
> MAX_MEM_ALLOC_SIZE: 1610612736
> IMAGE_SUPPORT: 1
> MAX_READ_IMAGE_ARGS: 128
> MAX_WRITE_IMAGE_ARGS: 8
> IMAGE2D_MAX_WIDTH: 8192
> IMAGE2D_MAX_HEIGHT: 8192
> IMAGE3D_MAX_WIDTH: 8192
> IMAGE3D_MAX_HEIGHT: 8192
> IMAGE3D_MAX_DEPTH: 2048
> MAX_SAMPLERS: 16
> MAX_PARAMETER_SIZE: 1024
> MEM_BASE_ADDR_ALIGN: 1024
> MIN_DATA_TYPE_ALIGN_SIZE: 128
> GLOBAL_MEM_CACHELINE_SIZE: 64
> GLOBAL_MEM_CACHE_SIZE: 8192
> GLOBAL_MEM_SIZE: 2147483648<tel:2147483648>
> MAX_CONSTANT_BUFFER_SIZE: 134217728
> MAX_CONSTANT_ARGS: 8
> LOCAL_MEM_SIZE: 65536
> ERROR_CORRECTION_SUPPORT: 0
> PROFILING_TIMER_RESOLUTION: 80
> ENDIAN_LITTLE: 1
> AVAILABLE: 1
> COMPILER_AVAILABLE: 1
> MAX_WORK_GROUP_SIZES: 512 512 512
> ---------------------------------------------------------------------
> ASSERTION FAILED: 0
>   at file 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/gen_encoder.cpp,
>  function virtual void gbe::GenEncoder::handleDouble(gbe::GenEncoder*, 
> uint32_t, gbe::GenRegister, gbe::GenRegister, gbe::GenRegister), line 634
> 
> Program received signal SIGTRAP, Trace/breakpoint trap.
> gbe::onFailedAssertion (msg=<optimized out>, file=<optimized out>, 
> fn=<optimized out>, line=<optimized out>) at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/sys/assert.cpp:76
> 76      
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/sys/assert.cpp:
>  No such file or directory.
> (gdb) bt
> #0  gbe::onFailedAssertion (msg=<optimized out>, file=<optimized out>, 
> fn=<optimized out>, line=<optimized out>) at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/sys/assert.cpp:76
> #1  0x00007ffff397a337 in gbe::GenEncoder::ADD (this=<optimized out>, 
> dest=..., src0=..., src1=...) at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/gen_encoder.cpp:817
> #2  0x00007ffff39451d6 in gbe::GenContext::emitBinaryInstruction 
> (this=0x7524b0, insn=...) at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/gen_context.cpp:768
> #3  0x00007ffff39655ac in gbe::GenContext::emitInstructionStream 
> (this=this@entry=0x7524b0) at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/./backend/gen_insn_selection.hxx:80
> #4  0x00007ffff3965c9e in gbe::GenContext::emitCode (this=0x7524b0) at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/gen_context.cpp:3215
> #5  0x00007ffff384c2c2 in gbe::Context::compileKernel 
> (this=this@entry=0x7524b0) at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/context.cpp:360
> #6  0x00007ffff3970cdb in gbe::GenProgram::compileKernel (this=<optimized 
> out>, unit=..., name="sum", relaxMath=<optimized out>, profiling=<optimized 
> out>)
>     at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/gen_program.cpp:194
> #7  0x00007ffff3850246 in gbe::Program::buildFromUnit 
> (this=this@entry=0xc25960, unit=..., error="") at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/program.cpp:174
> #8  0x00007ffff38508f9 in gbe::Program::buildFromLLVMFile 
> (this=this@entry=0xc25960, fileName=fileName@entry=0x0, 
> module=module@entry=0xc0ecb0, error="", optLevel=optLevel@entry=1)
>     at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/program.cpp:152
> #9  0x00007ffff3971403 in gbe::genProgramNewFromLLVM (deviceID=2582, 
> fileName=0x0, module=0xc0ecb0, llvm_ctx=0xc0e5e0, asm_file_name=<optimized 
> out>, stringSize=1000, err=0xc1ca30 "", errSize=0xc13520, optLevel=1, 
> options=0x0)
>     at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/gen_program.cpp:421
> #10 0x00007ffff385c5c3 in gbe::programNewFromSource (deviceID=2582, 
> source=<optimized out>, stringSize=1000, options=0x0, err=0xc1ca30 "", 
> errSize=0xc13520)
>     at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/backend/src/backend/program.cpp:896
> #11 0x00007ffff6f81270 in cl_program_build (p=p@entry=0xc13490, options=0x0) 
> at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/src/cl_program.c:576
> #12 0x00007ffff6f784a6 in clBuildProgram (program=0xc13490, 
> num_devices=<optimized out>, device_list=<optimized out>, options=<optimized 
> out>, pfn_notify=0x0, user_data=0x0)
>     at 
> /build/beignet-_o5G2i/beignet-1.2.0~git201601091733.fc410ee~padoka0/src/cl_api.c:956
> #13 0x000000000040376d in kernel_from_string ()
> #14 0x00000000004016f7 in main ()
> 
> | Paulo Dias
> | paulo.miguel.d...@gmail.com<mailto:paulo.miguel.d...@gmail.com>
> 
> Tempora mutantur, nos et mutamur in illis.
> 

> _______________________________________________
> Beignet mailing list
> Beignet@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet



_______________________________________________
Beignet mailing list
Beignet@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to