atomics vs Cray compilers

Issue #175 resolved
Jakub Sistek created an issue

I am trying to build PaRSEC on Archer, using the Cray compilers toolchain. The configure step proceeds well, while make gives me the following error:

CC-35 craycc: ERROR File = /home/d107/d107/sistja/parsec/parsec/include/parsec/sys/atomic-gcc.h, Line = 51 #error directive: "Requirement of CAS_128, but cannot use GCC_128_BUILTINS" # error "Requirement of CAS_128, but cannot use GCC_128_BUILTINS"

This seems to be called from a dead branch in atomic-gcc.h, which suggests that PARSEC_HAVE_INT128 is defined, but PARSEC_ATOMIC_USE_GCC_128_BUILTINS is not.

Any ideas?

Many thanks,

Jakub

Comments (3)

  1. Thomas Herault

    When we detected that GCC_128_BUILTINS are off, we should have deactivated PARSEC_USE_INT128.

    Can you add the following lines into cmake_modules/CheckAtomicIntrinsic.cmake at line 184:

            else( PARSEC_ATOMIC_USE_GCC_128_BUILTINS )
                  unset(PARSEC_HAVE_INT128 CACHE)
                  unset(PARSEC_HAVE_INT128)
            endif( PARSEC_ATOMIC_USE_GCC_128_BUILTINS )
    

    (instead of simply the endif)

    What version of the compiler do you use?

    Please report if this solves the problem.

  2. Jakub Sistek reporter

    Hi Thomas, yes, this seems to solve the issue. However, other appear:

    CC-41 craycc: ERROR File = /home/d107/d107/sistja/parsec/tests/unit/atomics.c, Line = 153 The indicated expression must have arithmetic or pointer type. if (n == 0) { ^

    CC-32 craycc: ERROR File = /home/d107/d107/sistja/parsec/tests/unit/atomics.c, Line = 157 The indicated expression must have an arithmetic type. positive_int128_tostr_rec(n/base, out, offset+1, base);

    Regarding compiler version, CMake tells me: The C compiler identification is Cray 8.5

    "which cc": /opt/cray/craype/2.5.10/bin/cc

  3. Log in to comment