Closed nyue closed 2 years ago
OSPRay needs as minimum ISA for x86 CPUs SSE4.1, which the Dell laptop supports (lscpu
Flags include sse4_1
). Did you enable SSE4
(or ALL
) in CMake variable OSPRAY_BUILD_ISA
? Do the binary release packages run?
The binary release packages runs fine.
I am trying to build the latest to validate (on said Dell laptop) the various MPI fixes.
OSPRAY_BUILD_ISA was already set to ALL
I also rebuild ospray with OSPRAY_BUILD_ISA set to SSE4, I still have the illegal instructions error
I am building on Ubuntu 20.04, gcc 9.4.0
$env LD_LIBRARY_PATH=~/systems/openvkl/1.2.0/lib:~/systems/embree/3.13.3/lib:~/systems/tbb/2021.5.0/lib:~/systems/rkcommon/1.9.0/lib ~/systems/ospray/devel/bin/ospExamples --osp:debug
Embree Ray Tracing Kernels 3.13.3 ()
Compiler : GCC 9.4.0
Build : Release
Platform : Linux (64bit)
CPU : Nehalem (GenuineIntel)
Threads : 4
ISA : XMM SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 POPCNT
Targets : SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
MXCSR : FTZ=1, DAZ=1
Config
Threads : default
ISA : XMM SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 POPCNT
Targets : SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 (supported)
SSE2 SSE4.2 AVX AVX2 AVX512 (compile time enabled)
Features: intersection_filter
Tasking : TBB2021.5 TBB_header_interface_12050 TBB_lib_interface_12050
general:
build threads = 0
build user threads = 0
start_threads = 0
affinity = 0
frequency_level = simd128
hugepages = enabled
verbosity = 2
cache_size = 134.218 MB
max_spatial_split_replications = 1.2
triangles:
accel = default
builder = default
traverser = default
motion blur triangles:
accel = default
builder = default
traverser = default
quads:
accel = default
builder = default
traverser = default
motion blur quads:
accel = default
builder = default
traverser = default
line segments:
accel = default
builder = default
traverser = default
motion blur line segments:
accel = default
builder = default
traverser = default
hair:
accel = default
builder = default
traverser = default
motion blur hair:
accel = default
builder = default
traverser = default
subdivision surfaces:
accel = default
grids:
accel = default
builder = default
motion blur grids:
accel = default
builder = default
object_accel:
min_leaf_size = 1
max_leaf_size = 1
object_accel_mb:
min_leaf_size = 1
max_leaf_size = 1
I noticed this in the --osp:debug output
SSE2 SSE4.2 AVX AVX2 AVX512 (compile time enabled)
On the Dell laptop, lscpu flags does not show AVX. Would that be a likely source of problem ?
The important line is
Targets : SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 (supported)
which looks good. Also thank you for confirming that the binary packets work. Now I can think of two possibilities
-mavx
Can you find out in which part or function the error happens (e.g. a stack trace with a debugger)?
Thanks @johguenther
Thanks for the tip about gdb+core-dump
I have found the cause, openvkl 1.2.0 defaults to enabling AVX and friends.
I have disabled them all (for my hardware) and rebuild everything.
ospray is running now.
Cheers
While debugging #518 I was also building ospray on a laptop.
On that laptop (Dell Latitude E6410), when running
ospray
, I get theillegal instructions (core dump)
error, this is running plainospray
without any MPI involvementThe CPU information for the laptop (via Ubuntu's
lscpu
command) is"Illegal instructions error"
As a reference, my executing of ospray/ospray_studio/openmpi was successful on a HP box (small form factor)
"Working fine"