torch / torch7

http://torch.ch
Other
8.96k stars 2.38k forks source link

not having neon does not imply x86 #822

Open drahnr opened 7 years ago

drahnr commented 7 years ago

Torch/pkg/torch/lib/TH/generic/simd/simd.h

#if defined(__NEON__)

static inline uint32_t detectHostSIMDExtensions()
{
  return SIMDExtension_NEON;
}

#else // x86

static inline void cpuid(uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx)
{
#ifndef _MSC_VER
  uint32_t a = *eax, b, c, d;
  asm volatile ( "cpuid\n\t"
                 : "+a"(a), "=b"(b), "=c"(c), "=d"(d) );
  *eax = a;
  *ebx = b;
  *ecx = c;
  *edx = d;
#else
  uint32_t cpuInfo[4];
  __cpuid(cpuInfo, *eax);
  *eax = cpuInfo[0];
  *ebx = cpuInfo[1];
  *ecx = cpuInfo[2];
  *edx = cpuInfo[3];
#endif
..

Which crashes on Nvidia DPX2 when compiling

drahnr commented 7 years ago
cd build && make install
Updating manifest for /home/nvidia/workspace/Torch/install/lib/luarocks/rocks
paths scm-1 is now built and installed in /home/nvidia/workspace/Torch/install/ (license: BSD)

Warning: unmatched variable LUALIB
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Try OpenMP CXX flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Found OpenMP: -fopenmp  
-- Compiling with OpenMP support
-- Compiling with OpenMP support
-- Could not find hardware support for NEON on this machine.
-- No OMAP3 processor on this on this machine.
-- No OMAP4 processor on this on this machine.
-- Performing Test C_HAS_SSE1_1

-- Performing Test C_HAS_SSE1_1 - Failed
-- Performing Test C_HAS_SSE1_2
-- Performing Test C_HAS_SSE1_2 - Failed
-- Performing Test C_HAS_SSE1_3
-- Performing Test C_HAS_SSE1_3 - Failed
-- Performing Test C_HAS_SSE2_1
-- Performing Test C_HAS_SSE2_1 - Failed
-- Performing Test C_HAS_SSE2_2
-- Performing Test C_HAS_SSE2_2 - Failed
-- Performing Test C_HAS_SSE2_3
-- Performing Test C_HAS_SSE2_3 - Failed
-- Performing Test C_HAS_SSE3_1
-- Performing Test C_HAS_SSE3_1 - Failed
-- Performing Test C_HAS_SSE3_2
-- Performing Test C_HAS_SSE3_2 - Failed
-- Performing Test C_HAS_SSE3_3
-- Performing Test C_HAS_SSE3_3 - Failed
-- Performing Test C_HAS_SSE4_1_1
-- Performing Test C_HAS_SSE4_1_1 - Failed
-- Performing Test C_HAS_SSE4_1_2
-- Performing Test C_HAS_SSE4_1_2 - Failed
-- Performing Test C_HAS_SSE4_1_3
-- Performing Test C_HAS_SSE4_1_3 - Failed
-- Performing Test C_HAS_SSE4_1_4
-- Performing Test C_HAS_SSE4_1_4 - Failed
-- Performing Test C_HAS_SSE4_2_1
-- Performing Test C_HAS_SSE4_2_1 - Failed
-- Performing Test C_HAS_SSE4_2_2
-- Performing Test C_HAS_SSE4_2_2 - Failed
-- Performing Test C_HAS_SSE4_2_3
-- Performing Test C_HAS_SSE4_2_3 - Failed
-- Performing Test C_HAS_SSE4_2_4

-- Performing Test C_HAS_SSE4_2_4 - Failed
-- Performing Test C_HAS_AVX_1
-- Performing Test C_HAS_AVX_1 - Failed
-- Performing Test C_HAS_AVX_2
-- Performing Test C_HAS_AVX_2 - Failed
-- Performing Test C_HAS_AVX_3
-- Performing Test C_HAS_AVX_3 - Failed
-- Performing Test CXX_HAS_SSE1_1
-- Performing Test CXX_HAS_SSE1_1 - Failed
-- Performing Test CXX_HAS_SSE1_2
-- Performing Test CXX_HAS_SSE1_2 - Failed
-- Performing Test CXX_HAS_SSE1_3
-- Performing Test CXX_HAS_SSE1_3 - Failed
-- Performing Test CXX_HAS_SSE2_1
-- Performing Test CXX_HAS_SSE2_1 - Failed
-- Performing Test CXX_HAS_SSE2_2
-- Performing Test CXX_HAS_SSE2_2 - Failed
-- Performing Test CXX_HAS_SSE2_3
-- Performing Test CXX_HAS_SSE2_3 - Failed
-- Performing Test CXX_HAS_SSE3_1
-- Performing Test CXX_HAS_SSE3_1 - Failed
-- Performing Test CXX_HAS_SSE3_2
-- Performing Test CXX_HAS_SSE3_2 - Failed
-- Performing Test CXX_HAS_SSE3_3
-- Performing Test CXX_HAS_SSE3_3 - Failed
-- Performing Test CXX_HAS_SSE4_1_1
-- Performing Test CXX_HAS_SSE4_1_1 - Failed
-- Performing Test CXX_HAS_SSE4_1_2
-- Performing Test CXX_HAS_SSE4_1_2 - Failed
-- Performing Test CXX_HAS_SSE4_1_3

-- Performing Test CXX_HAS_SSE4_1_3 - Failed
-- Performing Test CXX_HAS_SSE4_1_4
-- Performing Test CXX_HAS_SSE4_1_4 - Failed
-- Performing Test CXX_HAS_SSE4_2_1
-- Performing Test CXX_HAS_SSE4_2_1 - Failed
-- Performing Test CXX_HAS_SSE4_2_2
-- Performing Test CXX_HAS_SSE4_2_2 - Failed
-- Performing Test CXX_HAS_SSE4_2_3
-- Performing Test CXX_HAS_SSE4_2_3 - Failed
-- Performing Test CXX_HAS_SSE4_2_4
-- Performing Test CXX_HAS_SSE4_2_4 - Failed
-- Performing Test HAS_C11_ATOMICS
-- Performing Test HAS_C11_ATOMICS - Failed
-- Performing Test HAS_MSC_ATOMICS
-- Performing Test HAS_MSC_ATOMICS - Failed
-- Performing Test HAS_GCC_ATOMICS
-- Performing Test HAS_GCC_ATOMICS - Success
-- Atomics: using GCC intrinsics
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h

-- Looking for stddef.h - found
-- Check size of void*
-- Check size of void* - done
-- Checking for [mkl_gf_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_gf_lp64: not found
-- Checking for [mkl_gf_lp64 - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_gf: not found
-- Checking for [mkl_gf - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_intel_lp64: not found
-- Checking for [mkl_intel_lp64 - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_intel: not found
-- Checking for [mkl_intel - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_intel: not found
-- Checking for [mkl_gf_lp64 - mkl_sequential - mkl_core - m]
--   Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_sequential - mkl_core - m]
--   Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_sequential - mkl_core - m]
--   Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_sequential - mkl_core - m]
--   Library mkl_intel: not found
-- Checking for [mkl_gf_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_gf_lp64: not found
-- Checking for [mkl_gf_lp64 - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_gf: not found
-- Checking for [mkl_gf - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_intel_lp64: not found
-- Checking for [mkl_intel_lp64 - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_gnu_thread - mkl_core - pthread - m]
--   Library mkl_intel: not found
-- Checking for [mkl_intel - mkl_intel_thread - mkl_core - pthread - m]
--   Library mkl_intel: not found
-- Checking for [mkl - guide - pthread - m]
--   Library mkl: not found
-- MKL library not found
-- Checking for [openblas]
--   Library openblas: /opt/OpenBLAS/lib/libopenblas.so
-- Looking for sgemm_
-- Looking for sgemm_ - found
-- Performing Test BLAS_F2C_DOUBLE_WORKS
-- Performing Test BLAS_F2C_DOUBLE_WORKS - Failed
-- Performing Test BLAS_F2C_FLOAT_WORKS
-- Performing Test BLAS_F2C_FLOAT_WORKS - Success
-- Found a library with BLAS API (open).
-- Looking for cheev_

-- Looking for cheev_ - found
-- Found a library with LAPACK API. (open)
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- Looking for mmap
-- Looking for mmap - found
-- Looking for shm_open
-- Looking for shm_open - found
-- Looking for shm_unlink
-- Looking for shm_unlink - found
-- Looking for malloc_usable_size
-- Looking for malloc_usable_size - found
-- Performing Test C_HAS_inline

-- Performing Test C_HAS_inline - Success
-- C inline is supported (inline)
-- Performing Test C_HAS_THREAD
-- Performing Test C_HAS_THREAD - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nvidia/workspace/Torch/pkg/torch/build
2. SECTION: luaT

Hide Details
Scanning dependencies of target luaT
2.1. SECTION: TH

Hide Details
[  3%] Scanning dependencies of target TH
Building C object lib/luaT/CMakeFiles/luaT.dir/luaT.c.o
[ 10%] [ 10%] [ 17%] [ 17%] [ 20%] Building C object lib/TH/CMakeFiles/TH.dir/THGeneral.c.o
Building C object lib/TH/CMakeFiles/TH.dir/THAllocator.c.o
Building C object lib/TH/CMakeFiles/TH.dir/THBlas.c.o
Building C object lib/TH/CMakeFiles/TH.dir/THTensor.c.o
Building C object lib/TH/CMakeFiles/TH.dir/THStorage.c.o
[ 24%] [ 27%] Building C object lib/TH/CMakeFiles/TH.dir/THLapack.c.o
Building C object lib/TH/CMakeFiles/TH.dir/THLogAdd.c.o

[ 31%] Building C object lib/TH/CMakeFiles/TH.dir/THRandom.c.o
[ 34%] Building C object lib/TH/CMakeFiles/TH.dir/THFile.c.o
[ 37%] Building C object lib/TH/CMakeFiles/TH.dir/THDiskFile.c.o
Linking C shared library libluaT.so
[ 41%] [ 41%] Built target luaT
Building C object lib/TH/CMakeFiles/TH.dir/THMemoryFile.c.o
[ 44%] Building C object lib/TH/CMakeFiles/TH.dir/THAtomic.c.o
[ 48%] Building C object lib/TH/CMakeFiles/TH.dir/THVector.c.o

In file included from /home/nvidia/workspace/Torch/pkg/torch/lib/TH/THVector.c:2:0:
/home/nvidia/workspace/Torch/pkg/torch/lib/TH/generic/THVectorDispatch.c: In function 'THByteVector_vectorDispatchInit':
/home/nvidia/workspace/Torch/pkg/torch/lib/TH/generic/simd/simd.h:64:3: error: impossible constraint in 'asm'
   asm volatile ( "cpuid\n\t"
   ^
/home/nvidia/workspace/Torch/pkg/torch/lib/TH/generic/simd/simd.h:64:3: error: impossible constraint in 'asm'
   asm volatile ( "cpuid\n\t"
   ^
lib/TH/CMakeFiles/TH.dir/build.make:330: recipe for target 'lib/TH/CMakeFiles/TH.dir/THVector.c.o' failed
make[2]: *** [lib/TH/CMakeFiles/TH.dir/THVector.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....

CMakeFiles/Makefile2:129: recipe for target 'lib/TH/CMakeFiles/TH.dir/all' failed
make[1]: *** [lib/TH/CMakeFiles/TH.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2

Error: Build error: Failed building.
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUA=/home/nvidia/workspace/Torch/install/bin/luajit -DLUALIB= -DLUA_BINDIR="/home/nvidia/workspace/Torch/install/bin" -DLUA_INCDIR="/home/nvidia/workspace/Torch/install/include" -DLUA_LIBDIR="/home/nvidia/workspace/Torch/install/lib" -DLUADIR="/home/nvidia/workspace/Torch/install/lib/luarocks/rocks/torch/scm-1/lua" -DLIBDIR="/home/nvidia/workspace/Torch/install/lib/luarocks/rocks/torch/scm-1/lib" -DCMAKE_INSTALL_PREFIX="/home/nvidia/workspace/Torch/install/lib/luarocks/rocks/torch/scm-1" && make -j$(getconf _NPROCESSORS_ONLN)
drahnr commented 7 years ago

Related to #808