Browse Source

ILP support

long's in windows are 4 bytes (MSVS, intel compilers). Use int64_t and int32_t
to ensure 8 byte integers for ILP interface.

support 8 byte integer flag for intel ifort compiler
tags/v0.3.21
Larson, Eric Markus Mützel 4 years ago
parent
commit
8fe3555792
5 changed files with 27 additions and 6 deletions
  1. +3
    -2
      lapack-netlib/CBLAS/include/cblas.h
  2. +7
    -1
      lapack-netlib/CBLAS/include/cblas_f77.h
  3. +13
    -0
      lapack-netlib/CMAKE/CheckLAPACKCompilerFlags.cmake
  4. +1
    -1
      lapack-netlib/CMakeLists.txt
  5. +3
    -2
      lapack-netlib/LAPACKE/include/lapacke_config.h

+ 3
- 2
lapack-netlib/CBLAS/include/cblas.h View File

@@ -1,6 +1,7 @@
#ifndef CBLAS_H #ifndef CBLAS_H
#define CBLAS_H #define CBLAS_H
#include <stddef.h> #include <stddef.h>
#include <stdint.h>




#ifdef __cplusplus #ifdef __cplusplus
@@ -11,9 +12,9 @@ extern "C" { /* Assume C declarations for C++ */
* Enumerated and derived types * Enumerated and derived types
*/ */
#ifdef WeirdNEC #ifdef WeirdNEC
#define CBLAS_INDEX long
#define CBLAS_INDEX int64_t
#else #else
#define CBLAS_INDEX int
#define CBLAS_INDEX int32_t
#endif #endif


typedef enum {CblasRowMajor=101, CblasColMajor=102} CBLAS_LAYOUT; typedef enum {CblasRowMajor=101, CblasColMajor=102} CBLAS_LAYOUT;


+ 7
- 1
lapack-netlib/CBLAS/include/cblas_f77.h View File

@@ -9,6 +9,8 @@
#ifndef CBLAS_F77_H #ifndef CBLAS_F77_H
#define CBLAS_F77_H #define CBLAS_F77_H


#include <stdint.h>

#ifdef CRAY #ifdef CRAY
#include <fortran.h> #include <fortran.h>
#define F77_CHAR _fcd #define F77_CHAR _fcd
@@ -17,8 +19,12 @@
#define F77_STRLEN(a) (_fcdlen) #define F77_STRLEN(a) (_fcdlen)
#endif #endif


#ifndef F77_INT
#ifdef WeirdNEC #ifdef WeirdNEC
#define F77_INT long
#define F77_INT int64_t
#else
#define F77_INT int32_t
#endif
#endif #endif


#ifdef F77_CHAR #ifdef F77_CHAR


+ 13
- 0
lapack-netlib/CMAKE/CheckLAPACKCompilerFlags.cmake View File

@@ -14,6 +14,19 @@ macro( CheckLAPACKCompilerFlags )


set( FPE_EXIT FALSE ) set( FPE_EXIT FALSE )


# FORTRAN ILP default
if ( FORTRAN_ILP )
if( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" )
if ( WIN32 )
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /integer-size:64")
else ()
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -integer-size 64")
endif()
else()
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-integer-8")
endif()
endif()

# GNU Fortran # GNU Fortran
if( CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" ) if( CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" )
if( "${CMAKE_Fortran_FLAGS}" MATCHES "-ffpe-trap=[izoupd]") if( "${CMAKE_Fortran_FLAGS}" MATCHES "-ffpe-trap=[izoupd]")


+ 1
- 1
lapack-netlib/CMakeLists.txt View File

@@ -53,7 +53,7 @@ if(BUILD_INDEX64)
set(LAPACKELIB "lapacke64") set(LAPACKELIB "lapacke64")
set(TMGLIB "tmglib64") set(TMGLIB "tmglib64")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWeirdNEC -DLAPACK_ILP64 -DHAVE_LAPACK_CONFIG_H") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWeirdNEC -DLAPACK_ILP64 -DHAVE_LAPACK_CONFIG_H")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-integer-8")
set(FORTRAN_ILP TRUE)
else() else()
set(BLASLIB "blas") set(BLASLIB "blas")
set(CBLASLIB "cblas") set(CBLASLIB "cblas")


+ 3
- 2
lapack-netlib/LAPACKE/include/lapacke_config.h View File

@@ -49,12 +49,13 @@ extern "C" {
#endif /* __cplusplus */ #endif /* __cplusplus */


#include <stdlib.h> #include <stdlib.h>
#include <stdint.h>


#ifndef lapack_int #ifndef lapack_int
#if defined(LAPACK_ILP64) #if defined(LAPACK_ILP64)
#define lapack_int long
#define lapack_int int64_t
#else #else
#define lapack_int int
#define lapack_int int32_t
#endif #endif
#endif #endif




Loading…
Cancel
Save