krrishnarraj / clpeak

A tool which profiles OpenCL devices to find their peak capacities
Apache License 2.0
396 stars 111 forks source link

ASSERTION FAILED: sel.hasHalfType() #66

Open matwey opened 4 years ago

matwey commented 4 years ago

Hello,

I am running clpeak from master with beignet 1.3.2 on openSUSE Leap 15.1. The same behavior with 3rd and 4th Intel CPU generations.


Platform: Intel Gen OCL Driver
  Device: Intel(R) HD Graphics IvyBridge GT1
    Driver version  : 1.3 (Linux x64)
    Compute units   : 6
    Clock frequency : 1000 MHz
ASSERTION FAILED: sel.hasHalfType()
  at file /home/abuild/rpmbuild/BUILD/Beignet-1.3.2-Source/backend/src/backend/gen_insn_selection.cpp, function void gbe::ConvertInstructionPattern::convert32bitsToSmall(gbe::Selection::Opaque&, const gbe::ir::ConvertInstruction&, bool&) const, line 5841
fish: './clpeak' terminated by signal SIGTRAP (Trace or breakpoint trap)

Platform: Intel Gen OCL Driver
  Device: Intel(R) HD Graphics Haswell GT2 Desktop
    Driver version  : 1.3 (Linux x64)
    Compute units   : 20
    Clock frequency : 1000 MHz
ASSERTION FAILED: sel.hasHalfType()
  at file /home/abuild/rpmbuild/BUILD/Beignet-1.3.2-Source/backend/src/backend/gen_insn_selection.cpp, function void gbe::ConvertInstructionPattern::convert32bitsToSmall(gbe::Selection::Opaque&, const gbe::ir::ConvertInstruction&, bool&) const, line 5841
Trace/breakpoint trap (core dumped)

When gdb is uses to trap the fault:

(gdb) bt
#0  0x00007fffec274e2d in ?? () from /usr/lib64/beignet//libgbe.so
#1  0x00007fffec3afcb1 in ?? () from /usr/lib64/beignet//libgbe.so
#2  0x00007fffec390105 in ?? () from /usr/lib64/beignet//libgbe.so
#3  0x00007fffec390701 in ?? () from /usr/lib64/beignet//libgbe.so
#4  0x00007fffec3914cd in ?? () from /usr/lib64/beignet//libgbe.so
#5  0x00007fffec44334b in ?? () from /usr/lib64/beignet//libgbe.so
#6  0x00007fffec2d3532 in ?? () from /usr/lib64/beignet//libgbe.so
#7  0x00007fffec45aa4e in ?? () from /usr/lib64/beignet//libgbe.so
#8  0x00007fffec2d70fd in ?? () from /usr/lib64/beignet//libgbe.so
#9  0x00007fffec2d7404 in ?? () from /usr/lib64/beignet//libgbe.so
#10 0x00007fffec45b412 in ?? () from /usr/lib64/beignet//libgbe.so
#11 0x00007fffec2e9158 in ?? () from /usr/lib64/beignet//libgbe.so
#12 0x00007ffff01da651 in ?? () from /usr/lib64/beignet//libcl.so
#13 0x00007ffff01d0237 in clBuildProgram () from /usr/lib64/beignet//libcl.so
#14 0x00007ffff7bc0b8f in clBuildProgram () from /usr/lib64/libOpenCL.so.1
#15 0x00000000004088a8 in cl::Program::build (this=this@entry=0x7fffffffde08, devices=std::vector of length 1, capacity 1 = {...}, options=options@entry=0x418feb " -cl-mad-enable ", 
    notifyFptr=notifyFptr@entry=0x0, data=data@entry=0x0) at /home/matwey/temp/clpeak/build/clhpp_install/include/CL/cl.hpp:5273
#16 0x0000000000407a9e in clPeak::runAll (this=this@entry=0x7fffffffe0e0) at /home/matwey/temp/clpeak/src/clpeak.cpp:98
#17 0x000000000040567d in main (argc=1, argv=0x7fffffffe208) at /home/matwey/temp/clpeak/src/entry.cpp:9

Even if this hardware configuration cannot be supported, I would expect more informative message than the crash.

krrishnarraj commented 4 years ago

This seems like a beignet issue. The call-stack points deep inside cl::Program::build()

matwey commented 4 years ago

Initially, I supposed that clpeak may use some feature without explicitly checking it support.

matwey commented 4 years ago

Anyway, I've checked with Beignet from master, result is the same.

matwey commented 4 years ago

For the record. The same software configuration works well on never CPU:

Platform: Intel Gen OCL Driver
  Device: Intel(R) HD Graphics Kabylake ULT GT2
    Driver version  : 1.3 (Linux x64)
    Compute units   : 24
    Clock frequency : 1000 MHz

    Global memory bandwidth (GBPS)
      float   : 26.90
      float2  : 27.86
      float4  : 27.67
      float8  : 27.20
      float16 : 25.87

    Single-precision compute (GFLOPS)
      float   : 364.71
      float2  : 379.20
      float4  : 378.50
      float8  : 376.99
      float16 : 375.05

    half-precision compute (GFLOPS)
      half   : 455.54
      half2  : 745.82
      half4  : 749.58
      half8  : 746.53
      half16 : 741.75

    No double precision support! Skipped

    Transfer bandwidth (GBPS)
      enqueueWriteBuffer         : 25.97
      enqueueReadBuffer          : 12.41
      enqueueMapBuffer(for read) : 113623.47
        memcpy from mapped ptr   : 12.42
      enqueueUnmap(after write)  : 119304.65
        memcpy to mapped ptr     : 12.38

    Kernel launch latency : 35.64 us
matwey commented 4 years ago

Raised an issue for Beignet: https://gitlab.freedesktop.org/beignet/beignet/-/issues/84

krrishnarraj commented 4 years ago

Thanks