Posts by Raistmer

1) Message boards : Number crunching : Building on Arm Linux (Message 1931985)
Posted 22 hours ago by Profile Raistmer
Post:
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
2) Message boards : Number crunching : Building on Arm Linux (Message 1931984)
Posted 22 hours ago by Profile Raistmer
Post:
#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
3) Message boards : Number crunching : Building on Arm Linux (Message 1931983)
Posted 22 hours ago by Profile Raistmer
Post:
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
4) Message boards : Number crunching : Building on Arm Linux (Message 1931978)
Posted 23 hours ago by Profile Raistmer
Post:
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...
5) Message boards : Number crunching : Building on Arm Linux (Message 1931931)
Posted 1 day ago by Profile Raistmer
Post:
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).
6) Message boards : Number crunching : Building on Arm Linux (Message 1931925)
Posted 1 day ago by Profile Raistmer
Post:
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.
7) Message boards : Number crunching : Building on Arm Linux (Message 1931449)
Posted 4 days ago by Profile Raistmer
Post:
Well, I attempted to use Parallella device to build ARM version from opt codebase and failed much early...

parallella@parallella:~/sah_v7_opt/AKv8$ make
make -s all-recursive
Making all in client
In file included from /usr/include/c++/4.9/algorithm:60:0,
from /home/parallella/boinc/lib/std_fixes.h:54,
from ./../sah_config.h:672,
from <command-line>:0:
/usr/include/c++/4.9/utility:68:28: fatal error: bits/c++config.h: No such file or directory
#include <bits/c++config.h>
^
compilation terminated.
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

Seems it's some misconfiguration cause happened outside of out code....

Fast hack by copying sah_config from stock to opt codebase did not help:

parallella@parallella:~/sah_v7_opt/AKv8$ make
make -s all-recursive
Making all in client
In file included from main.cpp:53:0:
/usr/include/c++/4.9/cstdio:41:28: fatal error: bits/c++config.h: No such file or directory
#include <bits/c++config.h>
^
compilation terminated.
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

Seems that missing header included anyway....
8) Message boards : Number crunching : Building on Arm Linux (Message 1931233)
Posted 5 days ago by Profile Raistmer
Post:
I'm going to commit initial SIMDe emulation of SSE on ARM.

But you need to modify configure line (lets omit -DUSE_OPENCL for now, need to deal with CPU code first): add -DUSE_ARMV7 to properly highlight build path. In this path it will attempt toreplace already written SSE code with its emulation via SIMDe.
Laso check if SIMDE_SSE_NEON and similar defines enabled in build path - this will allow to use NEON where possible instead of plain SIMD emulation.
Seems SIMDe able to deal with emulation even w/o NEON support but resulting code could be inacceptable slow.

Would be good if you attempt to build from new rev and write new errors you get. Emulation far from completion currently but would be good to know if it's right path to go or completely wrong one.

EDIT: also add -DUSE_JSPF and -DUSE_I386_OPTIMIZATIONS and -DUSE_I386_XEON

The goal is to select same path I know to be working one and emulate all SSE usage on it via SIMDe.

EDIT2: At revision: 3750
Now awaiting results of your attempt.
9) Message boards : Number crunching : Building on Arm Linux (Message 1931121)
Posted 6 days ago by Profile Raistmer
Post:
looks like (example https://github.com/nemequ/LZSSE-SIMDe/blob/master/lzsse8/lzsse8.cpp ) to use SIMDe all intrinsics should be re-written by prefixing them.
So, either separate path needed or additional re-defining layer.
10) Message boards : Number crunching : Building on Arm Linux (Message 1931110)
Posted 6 days ago by Profile Raistmer
Post:
Well, ARM path for opt codebase isn't complete
#ifdef __ARM_NEON
  v_armv7_ChirpData(
  sah_complex* cx_DataArray,
  sah_complex* cx_ChirpDataArray,
  int chirp_rate_ind,
  double chirp_rate,
  int  ul_NumDataPoints,
  double sample_rate
) {
; //TODO: neon port of SSE chirping
}
#endif

so SSE emulation would be preferable way to go indeed (especially because goal is to build OpenCL part, not just to get faster CPU build).
11) Message boards : Number crunching : Building on Arm Linux (Message 1931004)
Posted 6 days ago by Profile Raistmer
Post:
BTW, looking at arm_neon.h from VS it seems __n128 plays same role there as __m128 for x86.
12) Message boards : Number crunching : Building on Arm Linux (Message 1931002)
Posted 6 days ago by Profile Raistmer
Post:
f_recip() used only for lcgf() so for now you could try to replace SIMD lcgf by its double scalar version:
/* Log of the compliment of the incomplete gamma function
 * log(1-P(a,x)) valid only for (a+1)<x
 */

double lcgf(double a, double x) {
#ifdef USE_MANUAL_CALLSTACK
  call_stack.enter("double lcgf()");
#endif 
  int i;
  const double EPS=std::numeric_limits<double>::epsilon();
  const double FPMIN=std::numeric_limits<double>::min()/EPS;
  double an,b,c,d,del,h,gln=gammln(a),rv;

  // assert(x>=(a+1));
  BOINCASSERT(x>=(a+1));
  b=x+1.0-a;
  c=1.0f/FPMIN;
  d=1.0/b;
  h=d;
  for (i=1;i<=ITMAX;i++) {
    an = -i*(i-a);
    b += 2.0;
    d=an*d+b;
    if (fabs(d)<FPMIN) d=FPMIN;
    c=b+an/c;
    if (fabs(c)<FPMIN) c=FPMIN;
    d=1.0/d;
    del=d*c;
    h*=del;
    if (fabs(del-1.0)<EPS) break;
  }
  // assert(i<ITMAX);
  BOINCASSERT(i<ITMAX);
  rv=(float)(log(h)-x+a*log(x)-gln);
#ifdef USE_MANUAL_CALLSTACK
  call_stack.exit();
#endif 
  return rv;
}

from stock codebase.
13) Message boards : Number crunching : Building on Arm Linux (Message 1931000)
Posted 6 days ago by Profile Raistmer
Post:
Well, you are on SSE SIMD code path currently so some NEON SIMD analogue should be provided....
Perhaps fixing path route selection (to not step on SSE one) would be better than dealing with all SSE-based functions one by one.
It means to step back to _m128 errors and find why those lines are reached.
Not sure opt codebase contains non-SIMD path at all though need more reading on that point.
14) Message boards : Number crunching : Building on Arm Linux (Message 1930576)
Posted 9 days ago by Profile Raistmer
Post:

The file analyzeFuncs.h is a header file in the client sub-directory. If am not mistaken, the missing types are related to SSE code for the x86 architecture, which is not available on arm. I have compared analyzeFuncs.h of the sah7_opt branch to the stock client and it seems that it has been heavily pimped. I suspect the code simply does not support arm neon architecture yet?

Adjusting the code for arm neon is definitely beyond my skills. So unless this can be fixed with a few compiler flag settings or adjustments in the source code I believe I have reached the point where need to give up.

Maybe a last idea: I have come across this web page [1] during some searches. Could it make sense to emulate SSE on ARM using simde library instead of rewriting the code?

As always any hints welcome! I am running out of ideas here.

[1] https://github.com/nemequ/simde

Thanks for link and description of your experiment.
I never attempted to build opt codebase for ARM so need some time to evaluate all this,
15) Message boards : Nebula : Progress (Message 1929895)
Posted 12 days ago by Profile Raistmer
Post:
Thanks for update!
16) Message boards : Number crunching : Should BOINC/Seti be stratified? (Message 1929894)
Posted 12 days ago by Profile Raistmer
Post:
AFAIK there was SETIv10 movement some time ago (skipping v9 is new trend it seems).
Not very much info since then or I just missed it. But v10 tasks expected to be more computationally heavy.
17) Message boards : Number crunching : Why is my host trashing workunits? (Message 1929893)
Posted 12 days ago by Profile Raistmer
Post:

I'm trying to return BOINC to user mode, but getting a consistent installer error 2203: The process cannot access the file because another process has locked a portion of the file. Eh? Never come across that one before. I've had a google round all the usual places, but nothing recognisable turns up. I'll sleep on it, but unless some bright spark turns up with a new idea, I'll probably give up on this machine - the speed of processing (best part of a day per WU) isn't worth the electricity.

If it's XP attempting to run into safe boot could help.
Apparently some process keeps lock on some of files BOINC needs during setup.
Process Explorer/Disk Monitor could provide another hints.
18) Message boards : Number crunching : Odd Result with 03ap18 WU in SoG - had to abort (Message 1929892)
Posted 12 days ago by Profile Raistmer
Post:
Ideal app case would run only single app instance per device. The more slowdown you get running 2 tasks simultaneously (for same hardware) the better optimization of single app instance is.
That means AP OpenCL much better uses GPU than OpenCL MB.
Running 2 instances per device always has inherent overhead (flushing all kind of caches; context switching). So it preferred only if there are free computational resources exist. Either by partially loaded CUs or by idle time intervals big enough to offset mentioned inherent overhead.
19) Message boards : Number crunching : Building on Arm Linux (Message 1929206)
Posted 16 days ago by Profile Raistmer
Post:

I am uncertain now what to do. Is this an error in the configuration script? Or is there still something wrong with the parameters given to the configure script? I am grateful for any hints.


Congrats for going so far!

Apparently some misconfiguration takes place.
I would start from fixing particular compiler error (maybe it's not "correct" way but inherently I don't trust "too smart" tools and *nix autoconfigure scripts that "know better" what capabilities your system has like this armv8 issue fall into that category).

So, attempt to establish from where exactly -march=armv8 option came, why compiler string gets this option.
Find place where it assigned and hack it to manually assign armv7 or native. No matter what autoconfig thinks it should be.
20) Message boards : Number crunching : Building on Arm Linux (Message 1927677)
Posted 25 days ago by Profile Raistmer
Post:
Until someone with more fresh knowledge steps in try to look through this thread:
http://setiathome.berkeley.edu/forum_thread.php?id=80954&sort_style=6&start=0(Linux (ARM processor) app and alternatives)


Next 20


 
©2018 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.