Open Source Development

Power Open Source Development

Explore the open source tools and capabilities for building and deploying modern applications on IBM Power platforms including AIX, IBM i, and Linux.


#Power


#Power

 View Only
  • 1.  OpenBLAS on AIX 7.1 with GCC 6.3.0

    Posted Thu October 04, 2018 08:11 AM

    Originally posted by: Teej42


    Is there any reason why we can't upgrade AIX 7.1 to GCC 8.1 instead of 6.3 as provided on the site?  We are trying to make OpenBLAS (https://github.com/xianyi/OpenBLAS) and it complains that id64_t is not a valid data type:

    $ /opt/freeware/bin/make TARGET=POWER BINARY=64 CC=gcc FC=gfortran
    In file included from cpuid_power.c:41:0,
                     from getarch.c:1051:
    /usr/include/sys/vminfo.h:743:2: error: unknown type name 'id64_t'
      id64_t    id; /* pid or tid */
      ^~~~~~
    make: *** [Makefile.prebuild:62: getarch] Error 1
    Makefile.system:1047: Makefile.: No such file or directory
    make: *** No rule to make target 'Makefile.'.  Stop.
    

    Comments on prior successful use of OpenBLAS points to the use of GCC 4.8.1+ on AIX, but that is only available on AIX 7.2.  I am still investigating on when id64_t data type is added to GCC.  Any particular reason why GCC 4.8.1+ can't be back ported to AIX 7.1?


    #AIX-Open-Source-Software
    #AIXOpenSource


  • 2.  Re: OpenBLAS on AIX 7.1 with GCC 6.3.0

    Posted Thu October 04, 2018 09:14 AM

    Originally posted by: AyappanP


    I guess you got confused with version numbers. AIX 7.1 has gcc 6.3.0 which is greater than 4.8.1 

    From this error, i would say this doesn't seems to do anything with GCC.

    I suggest you to add "-maix64" in the CFLAGS  and try again.

     


    #AIX-Open-Source-Software
    #AIXOpenSource


  • 3.  Re: OpenBLAS on AIX 7.1 with GCC 6.3.0

    Posted Thu October 04, 2018 10:47 AM

    Originally posted by: Teej42


    The workaround is to add the following line to /usr/include/sys/vminfo.h:
    
    /* TJG - Added 4 Oct 2018 */
    typedef long id64_t;
    

    Wish I didn't have to do this, but I can't identify the actual source of this typedef, and why it didn't work within the included sys/types.h:

    /* Generic size invariant ID */
    #ifdef  __64BIT__
    typedef long            id64_t;
    #elif defined(_LONG_LONG)
    typedef long long       id64_t;
    #else /* _ALL_SOURCE */
    typedef quad            id64_t;
    #endif
    

    Ah well, onward.


    #AIX-Open-Source-Software
    #AIXOpenSource