Building on Arm Linux

Message boards : Number crunching : Building on Arm Linux
Message board moderation

To post messages, you must log in.

Previous · 1 · 2

AuthorMessage
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1931925 - Posted: 26 Apr 2018, 0:04:16 UTC
Last modified: 26 Apr 2018, 0:09:47 UTC

In attempt to fix misconfigured environment I added few include places.
So, it ends up with another missing header now:

parallella@parallella:~/sah_v7_opt/AKv8$ make
make -s all-recursive
Making all in client
In file included from /usr/include/features.h:388:0,
from /usr/include/arm-linux-gnueabihf/c++/4.9/bits/os_defines.h:39,
from /usr/include/arm-linux-gnueabihf/c++/4.9/bits/c++config.h:430,
from /usr/include/c++/4.9/utility:68,
from /usr/include/c++/4.9/algorithm:60,
from /home/parallella/boinc/lib/std_fixes.h:54,
from ./../sah_config.h:672,
from <command-line>:0:
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory
# include <gnu/stubs-soft.h>
^
compilation terminated.

And it seems this one really misses on parallella host.

And from name of missing file (and one that present) I could infer they related to hard and soft FP calling conventions.
Parallella allows only hardfp (fastest one) but through config run it seems opt souces configured for softfp calling conventions.
So, another misconfigured part... will try to fix that in next session.
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1931925 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1931931 - Posted: 26 Apr 2018, 0:29:55 UTC - in response to Message 1931925.  

There is some section in opt configure.ac that has no counterpart in stock one:

# Checks for header files.
AC_HEADER_STDC
SAH_LARGEFILE_BREAKS_CXX
SAH_HEADER_STDCXX
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([fcntl.h inttypes.h limits.h memory.h alloca.h malloc.h stdlib.h string.h strings.h errno.h sys/types.h sys/ioctl.h sys/statvfs.h sys/time.h unistd.h dirent.h math.h float.h ieeefp.h floatingpoint.h complex.h  fftw3.h setjmp.h signal.h mach/mach_time.h sys/param.h sys/system.h machine/cpu.h CL/cl.h OpenCL/opencl.h])
save_cxxflags="${CXXFLAGS}"
save_cppflags="${CPPFLAGS}"
CXXFLAGS="${CXXFLAGS} -msse3"
CPPFLAGS="${CPPFLAGS} -msse3"
AC_CHECK_HEADERS([intrin.h x86intrin.h pmmintrin.h xmmintrin.h emmintrin.h smmintrin.h])
CXXFLAGS="${save_cxxflags} -mavx"
CPPFLAGS="${save_cppflags} -mavx"
AC_CHECK_HEADERS([immintrin.h avxintrin.h])
CXXFLAGS="${save_cxxflags} -march=armv7 -mfloat-abi=softfp -mfpu=neon"
CPPFLAGS="${save_cppflags} -march=armv7 -mfloat-abi=softfp -mfpu=neon"
AC_CHECK_HEADERS([arm_neon.h])
CXXFLAGS="${save_cxxflags}"
CPPFLAGS="${save_cppflags}"
if test "x$enable_intrinsics" != "xno" ; then
  if test "x$ac_cv_header_xmmintrin_h" != "xno" -o "x$ac_cv_header_emmintrin_h" != "xno" -o "x$ac_cv_header_pmmintrin_h" != "xno"; then
    AC_DEFINE([USE_INTRINSICS],[1],[Define to 1 to use SIMD intrinsics rather than inline assembly])
  fi
  if test "x$ac_cv_header_arm_neon_h"!="xno"; then
    AC_DEFINE([USE_INTRINSICS],[1],[Define to 1 to use ARM_NEON intrinsics])
  fi
fi
AC_CACHE_SAVE

So, it says unconditionally to use softfp always.
Definitely it's WRONG. For now I'll just remove -mfloat-abi=softfp but the question is if configure needs that section at all.
There is another one that governs calling conventions (similar to stock).
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1931931 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1931978 - Posted: 26 Apr 2018, 7:13:15 UTC - in response to Message 1931931.  

After some additional hacking like including service define on app level got own code compilation attempt.
Failure again but currently even don't see errors.
Lots of warnings.
Like
"
../../src/simde/x86/sse.h:2108:50: warning: ‘__artificial__’ attribute ignored [-Wattributes]
simde_mm_ucomigt_ss (simde__m128 a, simde__m128 b) {
"
and
"
../../src/simde/x86/sse3.h:176:1: warning: ‘simde__m128d simde_mm_movedup_pd(simde__m128d)’ defined but not used [-Wunused-function]
simde_mm_movedup_pd (simde__m128d a) {
"

Will disable warnings and re-try...
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1931978 · Report as offensive
rob smith Crowdfunding Project Donor*Special Project $75 donorSpecial Project $250 donor
Volunteer moderator
Volunteer tester

Send message
Joined: 7 Mar 03
Posts: 22200
Credit: 416,307,556
RAC: 380
United Kingdom
Message 1931980 - Posted: 26 Apr 2018, 7:27:52 UTC

Can you turn off classes of warnings? That might help you see the wood for the trees.
Bob Smith
Member of Seti PIPPS (Pluto is a Planet Protest Society)
Somewhere in the (un)known Universe?
ID: 1931980 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1931983 - Posted: 26 Apr 2018, 7:55:45 UTC
Last modified: 26 Apr 2018, 7:59:16 UTC

Some errors in SIMDe layer:

../../src/simde/x86/../hedley.h:486:61: error: expected constructor, destructor, or type conversion before ‘(’ token
# define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
^
../../src/simde/x86/../simde-common.h:131:1: note: in expansion of macro ‘HEDLEY_STATIC_ASSERT’
HEDLEY_STATIC_ASSERT(sizeof(simde_float32) == 4, "Unable to find 32-bit floating-point type.");
^
../../src/simde/x86/../hedley.h:486:61: error: expected constructor, destructor, or type conversion before ‘(’ token
# define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
^
../../src/simde/x86/../simde-common.h:140:1: note: in expansion of macro ‘HEDLEY_STATIC_ASSERT’
HEDLEY_STATIC_ASSERT(sizeof(simde_float64) == 8, "Unable to find 64-bit floating-point type.");
^
../../src/simde/x86/../hedley.h:486:61: error: expected constructor, destructor, or type conversion before ‘(’ token
# define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
^
../../src/simde/x86/mmx.h:96:1: note: in expansion of macro ‘HEDLEY_STATIC_ASSERT’
HEDLEY_STATIC_ASSERT(8 == sizeof(simde__m64), "__m64 size incorrect");
^
../../src/simde/x86/../hedley.h:486:61: error: expected constructor, destructor, or type conversion before ‘(’ token
# define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
^
../../src/simde/x86/sse.h:128:1: note: in expansion of macro ‘HEDLEY_STATIC_ASSERT’
HEDLEY_STATIC_ASSERT(16 == sizeof(simde__m128), "simde__m128 size incorrect");
^
../../src/simde/x86/../hedley.h:486:61: error: expected constructor, destructor, or type conversion before ‘(’ token
# define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
^
../../src/simde/x86/sse2.h:180:1: note: in expansion of macro ‘HEDLEY_STATIC_ASSERT’
HEDLEY_STATIC_ASSERT(16 == sizeof(simde__m128i), "simde__m128i size incorrect");
^
../../src/simde/x86/../hedley.h:486:61: error: expected constructor, destructor, or type conversion before ‘(’ token
# define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
^
../../src/simde/x86/sse2.h:181:1: note: in expansion of macro ‘HEDLEY_STATIC_ASSERT’
HEDLEY_STATIC_ASSERT(16 == sizeof(simde__m128d), "simde__m128d size incorrect");
^
Makefile:1279: recipe for target 'seti_boinc-main.o' failed
make[2]: *** [seti_boinc-main.o] Error 1
Makefile:512: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
Makefile:437: recipe for target 'all' failed
make: *** [all] Error 2
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1931983 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1931984 - Posted: 26 Apr 2018, 8:02:15 UTC - in response to Message 1931983.  
Last modified: 26 Apr 2018, 8:03:31 UTC

#if defined(HEDLEY_STATIC_ASSERT)
#  undef HEDLEY_STATIC_ASSERT
#endif
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#  define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
#elif defined(__cplusplus) && __cplusplus >= 201103L
#  define HEDLEY_STATIC_ASSERT(expr, message) static_assert(expr, message)
#elif HEDLEY_GCC_HAS_FEATURE(c_static_assert,4,6,0)
#  define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
#elif HEDLEY_MSVC_VERSION_CHECK(16,0,0)
#  define HEDLEY_STATIC_ASSERT(expr, message) static_assert(expr, message)
#else
#  define HEDLEY_STATIC_ASSERT(expr, message)
#endif

So fast hack will be to manually select last branch.
#if defined(HEDLEY_STATIC_ASSERT)
#  undef HEDLEY_STATIC_ASSERT
#endif
//#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
//#  define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
//#elif defined(__cplusplus) && __cplusplus >= 201103L
//#  define HEDLEY_STATIC_ASSERT(expr, message) static_assert(expr, message)
//#elif HEDLEY_GCC_HAS_FEATURE(c_static_assert,4,6,0)
//#  define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
//#elif HEDLEY_MSVC_VERSION_CHECK(16,0,0)
//#  define HEDLEY_STATIC_ASSERT(expr, message) static_assert(expr, message)
//#else
#  define HEDLEY_STATIC_ASSERT(expr, message)
//#endif

SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1931984 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1931985 - Posted: 26 Apr 2018, 8:06:59 UTC

Finally there is something I could really work with:

parallella@parallella:~/sah_v7_opt/AKv8$ make
make -s all-recursive
Making all in client
analyzeFuncs.cpp: In function ‘vFloat vec_recip(vFloat)’:
analyzeFuncs.cpp:9055:35: error: ‘_mm_rcp_ps’ was not declared in this scope
vFloat estimate = _mm_rcp_ps( v );
^
analyzeFuncs.cpp:177:55: error: ‘_mm_set_ps’ was not declared in this scope
#define ONE (_mm_set_ps(1.0f, 1.0f, 1.0f, 1.0f))
^
analyzeFuncs.cpp:9057:43: note: in expansion of macro ‘ONE’
return _mm_add_ps(_mm_mul_ps(_mm_sub_ps(ONE, _mm_mul_ps(estimate, v)), estimate), estimate);
^
analyzeFuncs.cpp:9057:70: error: ‘_mm_mul_ps’ was not declared in this scope
return _mm_add_ps(_mm_mul_ps(_mm_sub_ps(ONE, _mm_mul_ps(estimate, v)), estimate), estimate);
^
analyzeFuncs.cpp:9057:71: error: ‘_mm_sub_ps’ was not declared in this scope
return _mm_add_ps(_mm_mul_ps(_mm_sub_ps(ONE, _mm_mul_ps(estimate, v)), estimate), estimate);
^
analyzeFuncs.cpp:9057:82: error: ‘_mm_mul_ps’ was not declared in this scope
return _mm_add_ps(_mm_mul_ps(_mm_sub_ps(ONE, _mm_mul_ps(estimate, v)), estimate), estimate);
^
analyzeFuncs.cpp:9057:82: error: redeclaration of ‘<typeprefixerror>_mm_mul_ps’
analyzeFuncs.cpp:9057:70: note: previous declaration ‘<typeprefixerror>_mm_mul_ps’
return _mm_add_ps(_mm_mul_ps(_mm_sub_ps(ONE, _mm_mul_ps(estimate, v)), estimate), estimate);
^
analyzeFuncs.cpp:9057:93: error: ‘_mm_add_ps’ was not declared in this scope
return _mm_add_ps(_mm_mul_ps(_mm_sub_ps(ONE, _mm_mul_ps(estimate, v)), estimate), estimate);
^
analyzeFuncs.cpp: In function ‘int v_vChirpData(float (*)[2], float (*)[2], int, double, int, int, double)’:
analyzeFuncs.cpp:9097:78: error: ‘_mm_set1_pd’ was not declared in this scope
vDouble rate = _mm_set1_pd(chirp_rate * 0.5 / (sample_rate * sample_rate));
^
analyzeFuncs.cpp:9116:49: error: ‘_mm_set_pd’ was not declared in this scope
vDouble di1 = _mm_add_pd(_mm_set_pd(2.0, 0.0), di);
^
analyzeFuncs.cpp:9116:54: error: ‘_mm_add_pd’ was not declared in this scope
vDouble di1 = _mm_add_pd(_mm_set_pd(2.0, 0.0), di);
^
analyzeFuncs.cpp:9163:42: error: ‘_mm_mul_pd’ was not declared in this scope
a1 = _mm_mul_pd(_mm_mul_pd(di1, di1), rate);
^
analyzeFuncs.cpp:9163:49: error: ‘_mm_mul_pd’ was not declared in this scope
a1 = _mm_mul_pd(_mm_mul_pd(di1, di1), rate);
^
analyzeFuncs.cpp:9163:49: error: redeclaration of ‘<typeprefixerror>_mm_mul_pd’
analyzeFuncs.cpp:9163:42: note: previous declaration ‘<typeprefixerror>_mm_mul_pd’
a1 = _mm_mul_pd(_mm_mul_pd(di1, di1), rate);
^
analyzeFuncs.cpp:9170:72: error: ‘_mm_sub_pd’ was not declared in this scope
a1 = _mm_sub_pd(a1, _mm_sub_pd(_mm_add_pd(a1, roundVal), roundVal));
^
analyzeFuncs.cpp:9170:73: error: ‘_mm_sub_pd’ was not declared in this scope
a1 = _mm_sub_pd(a1, _mm_sub_pd(_mm_add_pd(a1, roundVal), roundVal));
^
analyzeFuncs.cpp:9170:73: error: redeclaration of ‘<typeprefixerror>_mm_sub_pd’
analyzeFuncs.cpp:9170:72: note: previous declaration ‘<typeprefixerror>_mm_sub_pd’
a1 = _mm_sub_pd(a1, _mm_sub_pd(_mm_add_pd(a1, roundVal), roundVal));
^
analyzeFuncs.cpp:9174:40: error: ‘_mm_cvtpd_ps’ was not declared in this scope
x = _mm_movelh_ps(_mm_cvtpd_ps(a1), _mm_cvtpd_ps(a2));
^
analyzeFuncs.cpp:9174:59: error: ‘_mm_movelh_ps’ was not declared in this scope
x = _mm_movelh_ps(_mm_cvtpd_ps(a1), _mm_cvtpd_ps(a2));
^
analyzeFuncs.cpp:9178:26: error: ‘_mm_mul_ps’ was not declared in this scope
y = _mm_mul_ps(x, x);
^
analyzeFuncs.cpp:169:84: error: ‘_mm_set_ps’ was not declared in this scope
#define SS4F (_mm_set_ps(-0.0046075748, -0.0046075748, -0.0046075748, -0.0046075748))
^
analyzeFuncs.cpp:9199:69: note: in expansion of macro ‘SS4F’
s = _mm_mul_ps(_mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(y, SS4F),
^
analyzeFuncs.cpp:9200:17: error: ‘_mm_add_ps’ was not declared in this scope
SS3F),
^
analyzeFuncs.cpp:9203:14: error: ‘_mm_add_ps’ was not declared in this scope
SS1F)),
^
analyzeFuncs.cpp:9203:14: error: redeclaration of ‘<typeprefixerror>_mm_add_ps’
analyzeFuncs.cpp:9200:17: note: previous declaration ‘<typeprefixerror>_mm_add_ps’
SS3F),
^
analyzeFuncs.cpp:9225:56: error: ‘_mm_sub_ps’ was not declared in this scope
x = _mm_sub_ps(_mm_mul_ps(c, c), _mm_mul_ps(s, s));
^
analyzeFuncs.cpp:9254:30: error: ‘_mm_moveldup_ps’ was not declared in this scope
cd1 = _mm_moveldup_ps(c);
^
analyzeFuncs.cpp:9255:30: error: ‘_mm_movehdup_ps’ was not declared in this scope
cd2 = _mm_movehdup_ps(c);
^
In file included from analyzeFuncs.cpp:103:0:
analyzeFuncs.h:90:46: error: no matching function for call to ‘simde__m128i::simde__m128i(vFloat&)’
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9258:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
analyzeFuncs.h:90:46: note: candidates are:
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9258:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
In file included from ../../src/simde/x86/sse3.h:28:0,
from ../../src/intrinsics.h:40,
from analyzeFuncs.cpp:88:
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i()
} simde__m128i;
^
../../src/simde/x86/sse2.h:126:3: note: candidate expects 0 arguments, 1 provided
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i(const simde__m128i&)
../../src/simde/x86/sse2.h:126:3: note: no known conversion for argument 1 from ‘vFloat {aka simde__m128}’ to ‘const simde__m128i&’
In file included from analyzeFuncs.cpp:103:0:
analyzeFuncs.cpp:9258:83: error: ‘_mm_shuffle_epi32’ was not declared in this scope
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.h:90:46: error: no matching function for call to ‘simde__m128i::simde__m128i(vFloat&)’
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9259:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d2 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d2), 0xb1));
^
analyzeFuncs.h:90:46: note: candidates are:
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9259:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d2 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d2), 0xb1));
^
In file included from ../../src/simde/x86/sse3.h:28:0,
from ../../src/intrinsics.h:40,
from analyzeFuncs.cpp:88:
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i()
} simde__m128i;
^
../../src/simde/x86/sse2.h:126:3: note: candidate expects 0 arguments, 1 provided
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i(const simde__m128i&)
../../src/simde/x86/sse2.h:126:3: note: no known conversion for argument 1 from ‘vFloat {aka simde__m128}’ to ‘const simde__m128i&’
analyzeFuncs.cpp:9264:35: error: ‘_mm_addsub_ps’ was not declared in this scope
cd1 = _mm_addsub_ps(cd1, td1);
^
analyzeFuncs.cpp:9268:27: error: ‘_mm_store_ps’ was not declared in this scope
_mm_store_ps(cd, cd1);
^
analyzeFuncs.cpp: In function ‘int v_vpChirpData(float (*)[2], float (*)[2], int, double, int, int, double)’:
analyzeFuncs.cpp:9324:78: error: ‘_mm_set1_pd’ was not declared in this scope
vDouble rate = _mm_set1_pd(chirp_rate * 0.5 / (sample_rate * sample_rate));
^
analyzeFuncs.cpp:9332:49: error: ‘_mm_set_pd’ was not declared in this scope
vDouble di1 = _mm_add_pd(_mm_set_pd(2.0, 0.0), di);
^
analyzeFuncs.cpp:9332:54: error: ‘_mm_add_pd’ was not declared in this scope
vDouble di1 = _mm_add_pd(_mm_set_pd(2.0, 0.0), di);
^
analyzeFuncs.cpp:9354:37: error: ‘_MM_HINT_NTA’ was not declared in this scope
_mm_prefetch((char *) (d+16), _MM_HINT_NTA);
^
analyzeFuncs.cpp:9354:49: error: ‘_mm_prefetch’ was not declared in this scope
_mm_prefetch((char *) (d+16), _MM_HINT_NTA);
^
analyzeFuncs.cpp:9364:42: error: ‘_mm_mul_pd’ was not declared in this scope
a1 = _mm_mul_pd(_mm_mul_pd(di1, di1), rate);
^
analyzeFuncs.cpp:9364:49: error: ‘_mm_mul_pd’ was not declared in this scope
a1 = _mm_mul_pd(_mm_mul_pd(di1, di1), rate);
^
analyzeFuncs.cpp:9364:49: error: redeclaration of ‘<typeprefixerror>_mm_mul_pd’
analyzeFuncs.cpp:9364:42: note: previous declaration ‘<typeprefixerror>_mm_mul_pd’
a1 = _mm_mul_pd(_mm_mul_pd(di1, di1), rate);
^
analyzeFuncs.cpp:9371:72: error: ‘_mm_sub_pd’ was not declared in this scope
a1 = _mm_sub_pd(a1, _mm_sub_pd(_mm_add_pd(a1, roundVal), roundVal));
^
analyzeFuncs.cpp:9371:73: error: ‘_mm_sub_pd’ was not declared in this scope
a1 = _mm_sub_pd(a1, _mm_sub_pd(_mm_add_pd(a1, roundVal), roundVal));
^
analyzeFuncs.cpp:9371:73: error: redeclaration of ‘<typeprefixerror>_mm_sub_pd’
analyzeFuncs.cpp:9371:72: note: previous declaration ‘<typeprefixerror>_mm_sub_pd’
a1 = _mm_sub_pd(a1, _mm_sub_pd(_mm_add_pd(a1, roundVal), roundVal));
^
analyzeFuncs.cpp:9375:40: error: ‘_mm_cvtpd_ps’ was not declared in this scope
x = _mm_movelh_ps(_mm_cvtpd_ps(a1), _mm_cvtpd_ps(a2));
^
analyzeFuncs.cpp:9375:59: error: ‘_mm_movelh_ps’ was not declared in this scope
x = _mm_movelh_ps(_mm_cvtpd_ps(a1), _mm_cvtpd_ps(a2));
^
analyzeFuncs.cpp:9379:26: error: ‘_mm_mul_ps’ was not declared in this scope
y = _mm_mul_ps(x, x);
^
analyzeFuncs.cpp:169:84: error: ‘_mm_set_ps’ was not declared in this scope
#define SS4F (_mm_set_ps(-0.0046075748, -0.0046075748, -0.0046075748, -0.0046075748))
^
analyzeFuncs.cpp:9385:69: note: in expansion of macro ‘SS4F’
s = _mm_mul_ps(_mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(y, SS4F),
^
analyzeFuncs.cpp:9386:17: error: ‘_mm_add_ps’ was not declared in this scope
SS3F),
^
analyzeFuncs.cpp:9389:14: error: ‘_mm_add_ps’ was not declared in this scope
SS1F)),
^
analyzeFuncs.cpp:9389:14: error: redeclaration of ‘<typeprefixerror>_mm_add_ps’
analyzeFuncs.cpp:9386:17: note: previous declaration ‘<typeprefixerror>_mm_add_ps’
SS3F),
^
analyzeFuncs.cpp:9398:56: error: ‘_mm_sub_ps’ was not declared in this scope
x = _mm_sub_ps(_mm_mul_ps(c, c), _mm_mul_ps(s, s));
^
analyzeFuncs.cpp:9413:30: error: ‘_mm_moveldup_ps’ was not declared in this scope
cd1 = _mm_moveldup_ps(c);
^
analyzeFuncs.cpp:9414:30: error: ‘_mm_movehdup_ps’ was not declared in this scope
cd2 = _mm_movehdup_ps(c);
^
In file included from analyzeFuncs.cpp:103:0:
analyzeFuncs.h:90:46: error: no matching function for call to ‘simde__m128i::simde__m128i(vFloat&)’
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9417:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
analyzeFuncs.h:90:46: note: candidates are:
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9417:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
In file included from ../../src/simde/x86/sse3.h:28:0,
from ../../src/intrinsics.h:40,
from analyzeFuncs.cpp:88:
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i()
} simde__m128i;
^
../../src/simde/x86/sse2.h:126:3: note: candidate expects 0 arguments, 1 provided
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i(const simde__m128i&)
../../src/simde/x86/sse2.h:126:3: note: no known conversion for argument 1 from ‘vFloat {aka simde__m128}’ to ‘const simde__m128i&’
In file included from analyzeFuncs.cpp:103:0:
analyzeFuncs.cpp:9417:83: error: ‘_mm_shuffle_epi32’ was not declared in this scope
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.h:90:46: error: no matching function for call to ‘simde__m128i::simde__m128i(vFloat&)’
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9418:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d2 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d2), 0xb1));
^
analyzeFuncs.h:90:46: note: candidates are:
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9418:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d2 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d2), 0xb1));
^
In file included from ../../src/simde/x86/sse3.h:28:0,
from ../../src/intrinsics.h:40,
from analyzeFuncs.cpp:88:
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i()
} simde__m128i;
^
../../src/simde/x86/sse2.h:126:3: note: candidate expects 0 arguments, 1 provided
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i(const simde__m128i&)
../../src/simde/x86/sse2.h:126:3: note: no known conversion for argument 1 from ‘vFloat {aka simde__m128}’ to ‘const simde__m128i&’
analyzeFuncs.cpp:9423:35: error: ‘_mm_addsub_ps’ was not declared in this scope
cd1 = _mm_addsub_ps(cd1, td1);
^
analyzeFuncs.cpp:9427:27: error: ‘_mm_store_ps’ was not declared in this scope
_mm_store_ps(cd, cd1);
^
In file included from analyzeFuncs.cpp:103:0:
analyzeFuncs.h:90:46: error: no matching function for call to ‘simde__m128i::simde__m128i(vFloat&)’
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9491:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
analyzeFuncs.h:90:46: note: candidates are:
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9491:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d1 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d1), 0xb1));
^
In file included from ../../src/simde/x86/sse3.h:28:0,
from ../../src/intrinsics.h:40,
from analyzeFuncs.cpp:88:
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i()
} simde__m128i;
^
../../src/simde/x86/sse2.h:126:3: note: candidate expects 0 arguments, 1 provided
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i(const simde__m128i&)
../../src/simde/x86/sse2.h:126:3: note: no known conversion for argument 1 from ‘vFloat {aka simde__m128}’ to ‘const simde__m128i&’
In file included from analyzeFuncs.cpp:103:0:
analyzeFuncs.h:90:46: error: no matching function for call to ‘simde__m128i::simde__m128i(vFloat&)’
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9492:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d2 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d2), 0xb1));
^
analyzeFuncs.h:90:46: note: candidates are:
#define cast_vFloat_to_vInt32(X) (vSInt32)(X)
^
analyzeFuncs.h:89:44: note: in definition of macro ‘cast_vInt32_to_vFloat’
#define cast_vInt32_to_vFloat(X) (vFloat)(X)
^
analyzeFuncs.cpp:9492:52: note: in expansion of macro ‘cast_vFloat_to_vInt32’
d2 = cast_vInt32_to_vFloat(_mm_shuffle_epi32(cast_vFloat_to_vInt32(d2), 0xb1));
^
In file included from ../../src/simde/x86/sse3.h:28:0,
from ../../src/intrinsics.h:40,
from analyzeFuncs.cpp:88:
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i()
} simde__m128i;
^
../../src/simde/x86/sse2.h:126:3: note: candidate expects 0 arguments, 1 provided
../../src/simde/x86/sse2.h:126:3: note: simde__m128i::simde__m128i(const simde__m128i&)
../../src/simde/x86/sse2.h:126:3: note: no known conversion for argument 1 from ‘vFloat {aka simde__m128}’ to ‘const simde__m128i&’
analyzeFuncs.cpp: At global scope:
analyzeFuncs.cpp:9696:1: error: ISO C++ forbids declaration of ‘v_armv7_ChirpData’ with no type [-fpermissive]
) {
^
Makefile:672: recipe for target 'seti_boinc-analyzeFuncs.o' failed
make[2]: *** [seti_boinc-analyzeFuncs.o] Error 1
Makefile:512: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
Makefile:437: recipe for target 'all' failed
make: *** [all] Error 2

SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1931985 · Report as offensive
Langweiler

Send message
Joined: 24 Feb 17
Posts: 15
Credit: 293,469
RAC: 0
Germany
Message 1932114 - Posted: 26 Apr 2018, 20:45:45 UTC - in response to Message 1931233.  

Thank you for all the great work. I have attempted to compile with revision 3750. If I should use a different revision by now, please, let me know.

Before I start I would like to ask you for the following changes in the repository: Please...
- make the file _autosetup executuable.
- fix detection of armv7 vs. armv8 by changing the following lines in configure.ac:

AM_CONDITIONAL(ARMV7, [test -n "`echo ${target} | fgrep -e armv7 -e gnueabihf`"])
AM_CONDITIONAL(ARMV8, [test -n "`echo ${target} | fgrep -e armv8 -e gnueabihf`"])

And here we go:

$ ./configure --disable-server --disable-graphics --disable-shared --enable-client --enable-static-client --enable-dependency-tracking --enable-static --with-boinc-platform=armv7l-unknown-linux-gnueabihf --with-ssl --enable-bitness=32 --enable-arm_neon --enable-fast-math --enable-comoptions --enable-intrinsics CXXFLAGS="-I./client -I./../src" CPPFLAGS="-DUSE_FFTW -DASYNC_SPIKE -DSETI7 -DSETI8 -DUSE_JSPF -DUSE_I386_OPTIMIZATIONS -DUSE_I386_XEON -fpermissive" LDSTATIC="/usr/lib/arm-linux-gnueabihf/libssl.a /usr/lib/arm-linux-gnueabihf/libcrypto.a" LDFLAGS=" -ldl -lm -lz -static-libgcc -static-libstdc++" BOINCDIR=" ../../boinc"

$ make -j 8

The result are numerous warnings and erros [1]. Hope that helps.

[1] http://paste.ubuntu.com/p/GrrHVqMJxy/
ID: 1932114 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1932385 - Posted: 27 Apr 2018, 20:42:54 UTC - in response to Message 1932114.  


- make the file _autosetup executuable.

That should wait another commit cause I configured write access only on Windows host so far.


- fix detection of armv7 vs. armv8 by changing the following lines in configure.ac:
AM_CONDITIONAL(ARMV7, [test -n "`echo ${target} | fgrep -e armv7 -e gnueabihf`"])
AM_CONDITIONAL(ARMV8, [test -n "`echo ${target} | fgrep -e armv8 -e gnueabihf`"])

done.

Well, I added few more defines but currently fresh rev still unbuidable. Some contention in types definitions between SIMDe and other world. Need to fix that before asking to try again...
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1932385 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1932471 - Posted: 28 Apr 2018, 8:17:04 UTC - in response to Message 1932385.  
Last modified: 28 Apr 2018, 8:17:16 UTC

For now I'm stuck on simde_float32 type.
For some reason typedef float simde_float32; didn't solve "missing type" error....
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1932471 · Report as offensive
Profile tullio
Volunteer tester

Send message
Joined: 9 Apr 04
Posts: 8797
Credit: 2,930,782
RAC: 1
Italy
Message 1932491 - Posted: 28 Apr 2018, 10:52:47 UTC
Last modified: 28 Apr 2018, 11:04:53 UTC

Since my old Nokia cell phone died, I had to buy a new smart phone and I bought an Ulefone Power 3 with Android 7.1.1. I then created a Google account and searched BOINC and SETi. It downloaded 5 tasks on its arm64-neon CPU with 8 cores. One is now running. It's the first time a use a RISC CPU after leaving in Trieste Research Area my Bull/MIPS R6000 minicomputer in 1995. I've read in Berkeley Online news that David Patterson and John Hennessy have been awarded the Turing prize for creating the RISC CPUs like Sparc and MIPS.
Tullio
tasks are named as aarch64-android-linux-gnu but they seem to be failing
ID: 1932491 · Report as offensive
Profile tullio
Volunteer tester

Send message
Joined: 9 Apr 04
Posts: 8797
Credit: 2,930,782
RAC: 1
Italy
Message 1932509 - Posted: 28 Apr 2018, 14:19:35 UTC
Last modified: 28 Apr 2018, 14:24:11 UTC

8.00 tasks (arm64-neon) all failed. 801 are still crunching. What is the difference?
Tullio
ID: 1932509 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1932554 - Posted: 28 Apr 2018, 21:30:24 UTC - in response to Message 1932509.  

8.00 tasks (arm64-neon) all failed. 801 are still crunching. What is the difference?
Tullio

First of all it's a little offtopic for this thread. You running Android, thread about Linux ARM opt app building.

Regarding apps:
Android (ARM64 processor) 8.00 (arm64-neon) 22 Jan 2016, 0:38:52 UTC 247 GigaFLOPS
Android (ARM64 processor) 8.00 (arm64-vfpv4) 22 Jan 2016, 0:38:52 UTC 233 GigaFLOPS
Android (ARM64 processor) 8.01 4 Jan 2017, 3:33:29 UTC 620 GigaFLOPS

All work on some devices so I think it's version of Android (7+) that causes problems with your device and 8.0 app. Why plan class didn't account for that - don't know.
Eventually quota system will take care of it so that host will receive only 8.01 tasks (Android 7 compatible, perhaps).
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1932554 · Report as offensive
Profile tullio
Volunteer tester

Send message
Joined: 9 Apr 04
Posts: 8797
Credit: 2,930,782
RAC: 1
Italy
Message 1932598 - Posted: 29 Apr 2018, 4:46:37 UTC - in response to Message 1932554.  

Sorry, I could not find any thread dedicated to Android. In Einstein they have one. One more question. SETI sees a GPU coprocessor on my Ulefone CPU. Einstein sees none. Why?
Tullio
ID: 1932598 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1932808 - Posted: 30 Apr 2018, 6:41:42 UTC - in response to Message 1932598.  

Sorry, I could not find any thread dedicated to Android. In Einstein they have one. One more question. SETI sees a GPU coprocessor on my Ulefone CPU. Einstein sees none. Why?
Tullio

1)If you can't find existing thread no one deny you to start fresh one ;)
2) Could you explain what "SETI sees GPU" means? Some log messages with GPU detected? Post them please. AFAIK CPU apps don't do GPU detection at all and there is no GPU apps for Android so far...
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1932808 · Report as offensive
Profile Wiggo
Avatar

Send message
Joined: 24 Jan 00
Posts: 34744
Credit: 261,360,520
RAC: 489
Australia
Message 1932811 - Posted: 30 Apr 2018, 8:04:39 UTC - in response to Message 1932808.  

Sorry, I could not find any thread dedicated to Android. In Einstein they have one. One more question. SETI sees a GPU coprocessor on my Ulefone CPU. Einstein sees none. Why?
Tullio

1)If you can't find existing thread no one deny you to start fresh one ;)
2) Could you explain what "SETI sees GPU" means? Some log messages with GPU detected? Post them please. AFAIK CPU apps don't do GPU detection at all and there is no GPU apps for Android so far...

AArch64 Processor rev 4 (aarch64) (8 processors) OpenCL GPU Mali-G71 (4096MB) driver: 1.02

Cheers.
ID: 1932811 · Report as offensive
Profile tullio
Volunteer tester

Send message
Joined: 9 Apr 04
Posts: 8797
Credit: 2,930,782
RAC: 1
Italy
Message 1932820 - Posted: 30 Apr 2018, 9:14:10 UTC - in response to Message 1932811.  

That is what I find clicking on Computer.
Tullio
ID: 1932820 · Report as offensive
Profile Raistmer
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 16 Jun 01
Posts: 6325
Credit: 106,370,077
RAC: 121
Russia
Message 1932832 - Posted: 30 Apr 2018, 11:30:57 UTC - in response to Message 1932820.  

AFAIK host details fromed from statistics BOINC client returns to BOINC server.
Not actually SETI-scpecific per se.
Most probably, SETI project just uses newer rev of BOINC server software than Einstein does.
Good to know detection (and hence sheduling) exist it fresh BOINC builds for Android OpenCL too.
When we will have Mali support under Linux it could be easier to enable it for Android too...
SETI apps news
We're not gonna fight them. We're gonna transcend them.
ID: 1932832 · Report as offensive
Previous · 1 · 2

Message boards : Number crunching : Building on Arm Linux


 
©2024 University of California
 
SETI@home and Astropulse are funded by grants from the National Science Foundation, NASA, and donations from SETI@home volunteers. AstroPulse is funded in part by the NSF through grant AST-0307956.