Merge branch 'develop' into develop
This commit is contained in:
commit
60596a1abc
32
.travis.yml
32
.travis.yml
|
|
@ -17,7 +17,7 @@ jobs:
|
||||||
- COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
|
- COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
|
||||||
script:
|
script:
|
||||||
- set -e
|
- set -e
|
||||||
- make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
|
- travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
|
||||||
- make -C test $COMMON_FLAGS $BTYPE
|
- make -C test $COMMON_FLAGS $BTYPE
|
||||||
- make -C ctest $COMMON_FLAGS $BTYPE
|
- make -C ctest $COMMON_FLAGS $BTYPE
|
||||||
- make -C utest $COMMON_FLAGS $BTYPE
|
- make -C utest $COMMON_FLAGS $BTYPE
|
||||||
|
|
@ -67,7 +67,7 @@ jobs:
|
||||||
- gfortran-mingw-w64-x86-64
|
- gfortran-mingw-w64-x86-64
|
||||||
before_script: *common-before
|
before_script: *common-before
|
||||||
script:
|
script:
|
||||||
- make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
|
- travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
|
||||||
env:
|
env:
|
||||||
- TARGET_BOX=WIN64
|
- TARGET_BOX=WIN64
|
||||||
- BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
|
- BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
|
||||||
|
|
@ -119,6 +119,34 @@ jobs:
|
||||||
- TARGET_BOX=LINUX64_MUSL
|
- TARGET_BOX=LINUX64_MUSL
|
||||||
- BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=core2"
|
- BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=core2"
|
||||||
|
|
||||||
|
- &test-cmake
|
||||||
|
stage: test
|
||||||
|
compiler: clang
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- gfortran
|
||||||
|
- cmake
|
||||||
|
dist: trusty
|
||||||
|
sudo: true
|
||||||
|
before_script:
|
||||||
|
- COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32"
|
||||||
|
script:
|
||||||
|
- set -e
|
||||||
|
- mkdir build
|
||||||
|
- CONFIG=Release
|
||||||
|
- cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG
|
||||||
|
- cmake --build build --config $CONFIG -- -j2
|
||||||
|
env:
|
||||||
|
- CMAKE=1
|
||||||
|
- <<: *test-cmake
|
||||||
|
env:
|
||||||
|
- CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1"
|
||||||
|
- <<: *test-cmake
|
||||||
|
compiler: gcc
|
||||||
|
env:
|
||||||
|
- CMAKE=1
|
||||||
|
|
||||||
# whitelist
|
# whitelist
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
|
|
|
||||||
179
CMakeLists.txt
179
CMakeLists.txt
|
|
@ -3,53 +3,30 @@
|
||||||
##
|
##
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.5)
|
cmake_minimum_required(VERSION 2.8.5)
|
||||||
project(OpenBLAS)
|
project(OpenBLAS C ASM)
|
||||||
set(OpenBLAS_MAJOR_VERSION 0)
|
set(OpenBLAS_MAJOR_VERSION 0)
|
||||||
set(OpenBLAS_MINOR_VERSION 3)
|
set(OpenBLAS_MINOR_VERSION 3)
|
||||||
set(OpenBLAS_PATCH_VERSION 0.dev)
|
set(OpenBLAS_PATCH_VERSION 0.dev)
|
||||||
set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}")
|
set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}")
|
||||||
|
|
||||||
enable_language(ASM)
|
|
||||||
enable_language(C)
|
|
||||||
|
|
||||||
# Adhere to GNU filesystem layout conventions
|
# Adhere to GNU filesystem layout conventions
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
set(OpenBLAS_LIBNAME libopenblas)
|
|
||||||
else()
|
|
||||||
set(OpenBLAS_LIBNAME openblas)
|
set(OpenBLAS_LIBNAME openblas)
|
||||||
endif()
|
|
||||||
|
|
||||||
#######
|
#######
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
option(BUILD_WITHOUT_LAPACK "Without LAPACK and LAPACKE (Only BLAS or CBLAS)" ON)
|
option(BUILD_WITHOUT_LAPACK "Without LAPACK and LAPACKE (Only BLAS or CBLAS)" ON)
|
||||||
endif()
|
endif()
|
||||||
option(BUILD_WITHOUT_CBLAS "Without CBLAS" OFF)
|
option(BUILD_WITHOUT_CBLAS "Without CBLAS" OFF)
|
||||||
option(BUILD_DEBUG "Build Debug Version" OFF)
|
|
||||||
option(DYNAMIC_ARCH "Build with DYNAMIC_ARCH" OFF)
|
option(DYNAMIC_ARCH "Build with DYNAMIC_ARCH" OFF)
|
||||||
|
option(BUILD_RELAPACK "Build with ReLAPACK (recursive LAPACK" OFF)
|
||||||
#######
|
#######
|
||||||
if(BUILD_WITHOUT_LAPACK)
|
if(BUILD_WITHOUT_LAPACK)
|
||||||
set(NO_LAPACK 1)
|
set(NO_LAPACK 1)
|
||||||
set(NO_LAPACKE 1)
|
set(NO_LAPACKE 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_CONFIGURATION_TYPES) # multiconfig generator?
|
|
||||||
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_BUILD_TYPE
|
|
||||||
Debug Debug
|
|
||||||
Release Release
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
if( NOT CMAKE_BUILD_TYPE )
|
|
||||||
if(BUILD_DEBUG)
|
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
|
||||||
else()
|
|
||||||
set(CMAKE_BUILD_TYPE Release)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(BUILD_WITHOUT_CBLAS)
|
if(BUILD_WITHOUT_CBLAS)
|
||||||
set(NO_CBLAS 1)
|
set(NO_CBLAS 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
@ -75,6 +52,9 @@ endif ()
|
||||||
set(SUBDIRS ${BLASDIRS})
|
set(SUBDIRS ${BLASDIRS})
|
||||||
if (NOT NO_LAPACK)
|
if (NOT NO_LAPACK)
|
||||||
list(APPEND SUBDIRS lapack)
|
list(APPEND SUBDIRS lapack)
|
||||||
|
if(BUILD_RELAPACK)
|
||||||
|
list(APPEND SUBDIRS relapack/src)
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# set which float types we want to build for
|
# set which float types we want to build for
|
||||||
|
|
@ -86,6 +66,10 @@ if (NOT DEFINED BUILD_SINGLE AND NOT DEFINED BUILD_DOUBLE AND NOT DEFINED BUILD_
|
||||||
set(BUILD_COMPLEX16 true)
|
set(BUILD_COMPLEX16 true)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (NOT DEFINED BUILD_MATGEN)
|
||||||
|
set(BUILD_MATGEN true)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(FLOAT_TYPES "")
|
set(FLOAT_TYPES "")
|
||||||
if (BUILD_SINGLE)
|
if (BUILD_SINGLE)
|
||||||
message(STATUS "Building Single Precision")
|
message(STATUS "Building Single Precision")
|
||||||
|
|
@ -107,19 +91,10 @@ if (BUILD_COMPLEX16)
|
||||||
list(APPEND FLOAT_TYPES "ZCOMPLEX") # defines COMPLEX and DOUBLE
|
list(APPEND FLOAT_TYPES "ZCOMPLEX") # defines COMPLEX and DOUBLE
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(SUBDIRS_ALL ${SUBDIRS} test ctest utest exports benchmark ../laswp ../bench)
|
|
||||||
|
|
||||||
# all :: libs netlib tests shared
|
|
||||||
|
|
||||||
# libs :
|
|
||||||
if (NOT DEFINED CORE OR "${CORE}" STREQUAL "UNKNOWN")
|
if (NOT DEFINED CORE OR "${CORE}" STREQUAL "UNKNOWN")
|
||||||
message(FATAL_ERROR "Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for details.")
|
message(FATAL_ERROR "Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for details.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${NO_STATIC} AND ${NO_SHARED})
|
|
||||||
message(FATAL_ERROR "Neither static nor shared are enabled.")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
#Set default output directory
|
#Set default output directory
|
||||||
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||||
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||||
|
|
@ -141,26 +116,20 @@ endforeach ()
|
||||||
# Not using add_subdirectory here because lapack-netlib already has its own CMakeLists.txt. Instead include a cmake script with the sources we want.
|
# Not using add_subdirectory here because lapack-netlib already has its own CMakeLists.txt. Instead include a cmake script with the sources we want.
|
||||||
if (NOT NOFORTRAN AND NOT NO_LAPACK)
|
if (NOT NOFORTRAN AND NOT NO_LAPACK)
|
||||||
include("${PROJECT_SOURCE_DIR}/cmake/lapack.cmake")
|
include("${PROJECT_SOURCE_DIR}/cmake/lapack.cmake")
|
||||||
if (NOT NO_LAPACKE)
|
if (NOT NO_LAPACKE)
|
||||||
include("${PROJECT_SOURCE_DIR}/cmake/lapacke.cmake")
|
include("${PROJECT_SOURCE_DIR}/cmake/lapacke.cmake")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Only generate .def for dll on MSVC and always produce pdb files for debug and release
|
# Only generate .def for dll on MSVC and always produce pdb files for debug and release
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(OpenBLAS_DEF_FILE "${PROJECT_BINARY_DIR}/openblas.def")
|
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 3.4)
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
|
set(OpenBLAS_DEF_FILE "${PROJECT_BINARY_DIR}/openblas.def")
|
||||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")
|
endif()
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#ifeq ($(DYNAMIC_ARCH), 1)
|
|
||||||
# @$(MAKE) -C kernel commonlibs || exit 1
|
|
||||||
# @for d in $(DYNAMIC_CORE) ; \
|
|
||||||
# do $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\
|
|
||||||
# done
|
|
||||||
# @echo DYNAMIC_ARCH=1 >> Makefile.conf_last
|
|
||||||
#endif
|
|
||||||
if (${DYNAMIC_ARCH})
|
if (${DYNAMIC_ARCH})
|
||||||
add_subdirectory(kernel)
|
add_subdirectory(kernel)
|
||||||
foreach(TARGET_CORE ${DYNAMIC_CORE})
|
foreach(TARGET_CORE ${DYNAMIC_CORE})
|
||||||
|
|
@ -169,11 +138,29 @@ if (${DYNAMIC_ARCH})
|
||||||
endforeach()
|
endforeach()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# Only build shared libs for MSVC
|
||||||
|
if (MSVC)
|
||||||
|
set(BUILD_SHARED_LIBS ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# add objects to the openblas lib
|
# add objects to the openblas lib
|
||||||
add_library(${OpenBLAS_LIBNAME} SHARED ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})
|
add_library(${OpenBLAS_LIBNAME} ${LA_SOURCES} ${LAPACKE_SOURCES} ${RELA_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})
|
||||||
|
|
||||||
include("${PROJECT_SOURCE_DIR}/cmake/export.cmake")
|
# Android needs to explicitly link against libm
|
||||||
|
if(ANDROID)
|
||||||
|
target_link_libraries(${OpenBLAS_LIBNAME} m)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Handle MSVC exports
|
||||||
|
if(MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 3.4)
|
||||||
|
include("${PROJECT_SOURCE_DIR}/cmake/export.cmake")
|
||||||
|
else()
|
||||||
|
# Creates verbose .def file (51KB vs 18KB)
|
||||||
|
set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Set output for libopenblas
|
# Set output for libopenblas
|
||||||
set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||||
|
|
@ -188,25 +175,28 @@ foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
add_subdirectory(utest)
|
|
||||||
|
|
||||||
if (NOT MSVC)
|
if (USE_THREAD)
|
||||||
#only build shared library for MSVC
|
# Add threading library to linker
|
||||||
|
find_package(Threads)
|
||||||
add_library(${OpenBLAS_LIBNAME}_static STATIC ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS})
|
if (THREADS_HAVE_PTHREAD_ARG)
|
||||||
set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME})
|
set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY COMPILE_OPTIONS "-pthread")
|
||||||
set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
|
||||||
|
endif()
|
||||||
if(SMP)
|
target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
target_link_libraries(${OpenBLAS_LIBNAME} pthread)
|
|
||||||
target_link_libraries(${OpenBLAS_LIBNAME}_static pthread)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#build test and ctest
|
if (MSVC OR NOT NOFORTRAN)
|
||||||
add_subdirectory(test)
|
# Broken without fortran on unix
|
||||||
if(NOT NO_CBLAS)
|
add_subdirectory(utest)
|
||||||
add_subdirectory(ctest)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (NOT MSVC AND NOT NOFORTRAN)
|
||||||
|
# Build test and ctest
|
||||||
|
add_subdirectory(test)
|
||||||
|
if(NOT NO_CBLAS)
|
||||||
|
add_subdirectory(ctest)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
|
set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
|
||||||
|
|
@ -214,24 +204,6 @@ set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
|
||||||
SOVERSION ${OpenBLAS_MAJOR_VERSION}
|
SOVERSION ${OpenBLAS_MAJOR_VERSION}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# TODO: Why is the config saved here? Is this necessary with CMake?
|
|
||||||
#Save the config files for installation
|
|
||||||
# @cp Makefile.conf Makefile.conf_last
|
|
||||||
# @cp config.h config_last.h
|
|
||||||
#ifdef QUAD_PRECISION
|
|
||||||
# @echo "#define QUAD_PRECISION">> config_last.h
|
|
||||||
#endif
|
|
||||||
#ifeq ($(EXPRECISION), 1)
|
|
||||||
# @echo "#define EXPRECISION">> config_last.h
|
|
||||||
#endif
|
|
||||||
###
|
|
||||||
|
|
||||||
#ifdef USE_THREAD
|
|
||||||
# @echo USE_THREAD=$(USE_THREAD) >> Makefile.conf_last
|
|
||||||
#endif
|
|
||||||
# @touch lib.grd
|
|
||||||
|
|
||||||
# Install project
|
# Install project
|
||||||
|
|
||||||
# Install libraries
|
# Install libraries
|
||||||
|
|
@ -240,27 +212,34 @@ install(TARGETS ${OpenBLAS_LIBNAME}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
|
||||||
|
|
||||||
# Install include files
|
message(STATUS "Generating openblas_config.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
set (GENCONFIG_BIN ${CMAKE_BINARY_DIR}/gen_config_h${CMAKE_EXECUTABLE_SUFFIX})
|
|
||||||
|
|
||||||
execute_process(COMMAND ${GENCONFIG_BIN}
|
set(OPENBLAS_CONFIG_H ${CMAKE_BINARY_DIR}/openblas_config.h)
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/config.h
|
file(WRITE ${OPENBLAS_CONFIG_H} "#ifndef OPENBLAS_CONFIG_H\n")
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h
|
file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_CONFIG_H\n")
|
||||||
OUTPUT_VARIABLE OPENBLAS_CONFIG_H_CONTENTS)
|
file(STRINGS ${PROJECT_BINARY_DIR}/config.h __lines)
|
||||||
|
foreach(line ${__lines})
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}/openblas_config.tmp "${OPENBLAS_CONFIG_H_CONTENTS}")
|
string(REPLACE "#define " "" line ${line})
|
||||||
configure_file(${CMAKE_BINARY_DIR}/openblas_config.tmp ${CMAKE_BINARY_DIR}/openblas_config.h COPYONLY)
|
file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_${line}\n")
|
||||||
|
endforeach()
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_VERSION \"OpenBLAS ${OpenBLAS_VERSION}\"\n")
|
||||||
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h OPENBLAS_CONFIG_TEMPLATE_H_CONTENTS)
|
||||||
|
file(APPEND ${OPENBLAS_CONFIG_H} "${OPENBLAS_CONFIG_TEMPLATE_H_CONTENTS}\n")
|
||||||
|
file(APPEND ${OPENBLAS_CONFIG_H} "#endif /* OPENBLAS_CONFIG_H */\n")
|
||||||
|
install (FILES ${OPENBLAS_CONFIG_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
|
if(NOT NOFORTRAN)
|
||||||
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}/f77blas.h "")
|
set(F77BLAS_H ${CMAKE_BINARY_DIR}/f77blas.h)
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n")
|
file(WRITE ${F77BLAS_H} "#ifndef OPENBLAS_F77BLAS_H\n")
|
||||||
|
file(APPEND ${F77BLAS_H} "#define OPENBLAS_F77BLAS_H\n")
|
||||||
|
file(APPEND ${F77BLAS_H} "#include \"openblas_config.h\"\n")
|
||||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS)
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS)
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "${COMMON_INTERFACE_H_CONTENTS}")
|
file(APPEND ${F77BLAS_H} "${COMMON_INTERFACE_H_CONTENTS}\n")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#endif")
|
file(APPEND ${F77BLAS_H} "#endif")
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install (FILES ${F77BLAS_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT NO_CBLAS)
|
if(NOT NO_CBLAS)
|
||||||
message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||||
|
|
@ -283,10 +262,6 @@ if(NOT NO_LAPACKE)
|
||||||
install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT MSVC)
|
|
||||||
install (TARGETS ${OpenBLAS_LIBNAME}_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(FindPkgConfig QUIET)
|
include(FindPkgConfig QUIET)
|
||||||
if(PKG_CONFIG_FOUND)
|
if(PKG_CONFIG_FOUND)
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/openblas.pc.in ${PROJECT_BINARY_DIR}/openblas.pc @ONLY)
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/openblas.pc.in ${PROJECT_BINARY_DIR}/openblas.pc @ONLY)
|
||||||
|
|
|
||||||
1
Makefile
1
Makefile
|
|
@ -270,6 +270,7 @@ endif
|
||||||
ifeq ($(BUILD_LAPACK_DEPRECATED), 1)
|
ifeq ($(BUILD_LAPACK_DEPRECATED), 1)
|
||||||
-@echo "BUILD_DEPRECATED = 1" >> $(NETLIB_LAPACK_DIR)/make.inc
|
-@echo "BUILD_DEPRECATED = 1" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||||
endif
|
endif
|
||||||
|
-@echo "LAPACKE_WITH_TMG = 1" >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||||
-@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc
|
-@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,12 +100,12 @@ endif
|
||||||
|
|
||||||
|
|
||||||
#Generating openblas.pc
|
#Generating openblas.pc
|
||||||
@echo Generating openblas.pc in $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)
|
@echo Generating openblas.pc in "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)"
|
||||||
@echo 'libdir='$(OPENBLAS_LIBRARY_DIR) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc
|
@echo 'libdir='$(OPENBLAS_LIBRARY_DIR) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc"
|
||||||
@echo 'includedir='$(OPENBLAS_INCLUDE_DIR) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc
|
@echo 'includedir='$(OPENBLAS_INCLUDE_DIR) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc"
|
||||||
@echo 'version='$(VERSION) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc
|
@echo 'version='$(VERSION) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc"
|
||||||
@echo 'extralib='$(EXTRALIB) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc
|
@echo 'extralib='$(EXTRALIB) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc"
|
||||||
@cat openblas.pc.in >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc
|
@cat openblas.pc.in >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc"
|
||||||
|
|
||||||
|
|
||||||
#Generating OpenBLASConfig.cmake
|
#Generating OpenBLASConfig.cmake
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,10 @@ ifeq ($(TARGET), P6600)
|
||||||
TARGET_FLAGS = -mips64r6
|
TARGET_FLAGS = -mips64r6
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TARGET), I6500)
|
||||||
|
TARGET_FLAGS = -mips64r6
|
||||||
|
endif
|
||||||
|
|
||||||
all: getarch_2nd
|
all: getarch_2nd
|
||||||
./getarch_2nd 0 >> $(TARGET_MAKE)
|
./getarch_2nd 0 >> $(TARGET_MAKE)
|
||||||
./getarch_2nd 1 >> $(TARGET_CONF)
|
./getarch_2nd 1 >> $(TARGET_CONF)
|
||||||
|
|
|
||||||
|
|
@ -181,6 +181,7 @@ endif
|
||||||
|
|
||||||
ifeq ($(NUM_THREADS), 1)
|
ifeq ($(NUM_THREADS), 1)
|
||||||
override USE_THREAD = 0
|
override USE_THREAD = 0
|
||||||
|
override USE_OPENMP = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef USE_THREAD
|
ifdef USE_THREAD
|
||||||
|
|
@ -568,6 +569,11 @@ CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
|
||||||
FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
|
FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CORE), I6500)
|
||||||
|
CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
|
||||||
|
FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(OSNAME), AIX)
|
ifeq ($(OSNAME), AIX)
|
||||||
BINARY_DEFINED = 1
|
BINARY_DEFINED = 1
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[](https://gitter.im/xianyi/OpenBLAS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
[](https://gitter.im/xianyi/OpenBLAS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
|
||||||
Travis CI: [](https://travis-ci.org/xianyi/OpenBLAS)
|
Travis CI: [](https://travis-ci.org/xianyi/OpenBLAS)
|
||||||
|
|
||||||
AppVeyor: [](https://ci.appveyor.com/project/xianyi/openblas/branch/develop)
|
AppVeyor: [](https://ci.appveyor.com/project/xianyi/openblas/branch/develop)
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
@ -106,6 +106,9 @@ Please read GotoBLAS_01Readme.txt
|
||||||
- **ARMV8**: Experimental
|
- **ARMV8**: Experimental
|
||||||
- **ARM Cortex-A57**: Experimental
|
- **ARM Cortex-A57**: Experimental
|
||||||
|
|
||||||
|
#### PPC/PPC64
|
||||||
|
- **POWER8**: Optmized Level-3 BLAS and some Level-1, only with USE_OPENMP=1
|
||||||
|
|
||||||
#### IBM zEnterprise System:
|
#### IBM zEnterprise System:
|
||||||
- **Z13**: Optimized Level-3 BLAS and Level-1,2 (double precision)
|
- **Z13**: Optimized Level-3 BLAS and Level-1,2 (double precision)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@ LOONGSON3A
|
||||||
LOONGSON3B
|
LOONGSON3B
|
||||||
I6400
|
I6400
|
||||||
P6600
|
P6600
|
||||||
|
I6500
|
||||||
|
|
||||||
5.IA64 CPU:
|
5.IA64 CPU:
|
||||||
ITANIUM2
|
ITANIUM2
|
||||||
|
|
|
||||||
34
appveyor.yml
34
appveyor.yml
|
|
@ -5,6 +5,8 @@ version: 0.2.19.{build}
|
||||||
platform:
|
platform:
|
||||||
- x64
|
- x64
|
||||||
|
|
||||||
|
os: Visual Studio 2017
|
||||||
|
|
||||||
configuration: Release
|
configuration: Release
|
||||||
|
|
||||||
clone_folder: c:\projects\OpenBLAS
|
clone_folder: c:\projects\OpenBLAS
|
||||||
|
|
@ -24,29 +26,41 @@ skip_commits:
|
||||||
message: /\[av skip\]/
|
message: /\[av skip\]/
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
|
global:
|
||||||
|
CONDA_INSTALL_LOCN: C:\\Miniconda36-x64
|
||||||
matrix:
|
matrix:
|
||||||
- COMPILER: clang-cl
|
- COMPILER: clang-cl
|
||||||
DYNAMIC_ARCH: ON
|
WITH_FORTRAN: yes
|
||||||
- COMPILER: clang-cl
|
- COMPILER: clang-cl
|
||||||
|
DYNAMIC_ARCH: ON
|
||||||
|
WITH_FORTRAN: no
|
||||||
- COMPILER: cl
|
- COMPILER: cl
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat
|
- if [%COMPILER%]==[clang-cl] call %CONDA_INSTALL_LOCN%\Scripts\activate.bat
|
||||||
- if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force
|
- if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force
|
||||||
- if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake
|
- if [%COMPILER%]==[clang-cl] conda install --yes --quiet clangdev cmake
|
||||||
- if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
|
||||||
|
- if [%WITH_FORTRAN%]==[no] conda install --yes --quiet ninja
|
||||||
|
- if [%WITH_FORTRAN%]==[yes] conda install --yes --quiet -c isuruf kitware-ninja
|
||||||
|
- if [%WITH_FORTRAN%]==[yes] conda install --yes --quiet flang
|
||||||
|
|
||||||
|
- if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||||
|
- if [%COMPILER%]==[clang-cl] set "LIB=%CONDA_INSTALL_LOCN%\Library\lib;%LIB%"
|
||||||
|
- if [%COMPILER%]==[clang-cl] set "CPATH=%CONDA_INSTALL_LOCN%\Library\include;%CPATH%"
|
||||||
|
|
||||||
before_build:
|
before_build:
|
||||||
- echo Running cmake...
|
- ps: if (-Not (Test-Path .\build)) { mkdir build }
|
||||||
- cd c:\projects\OpenBLAS
|
- cd build
|
||||||
- if [%COMPILER%]==[cl] cmake -G "Visual Studio 12 Win64" .
|
- if [%COMPILER%]==[cl] cmake -G "Visual Studio 15 2017 Win64" ..
|
||||||
- if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl .
|
- if [%WITH_FORTRAN%]==[no] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl ..
|
||||||
- if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON .
|
- if [%WITH_FORTRAN%]==[yes] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DBUILD_WITHOUT_LAPACK=no -DNOFORTRAN=0 ..
|
||||||
|
- if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON ..
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- cmake --build .
|
- cmake --build .
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- echo Running Test
|
- echo Running Test
|
||||||
- cd c:\projects\OpenBLAS\utest
|
- cd utest
|
||||||
- openblas_utest
|
- openblas_utest
|
||||||
|
|
|
||||||
112
benchmark/gemm.c
112
benchmark/gemm.c
|
|
@ -121,13 +121,15 @@ static void *huge_malloc(BLASLONG size){
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
|
|
||||||
FLOAT *a, *b, *c;
|
FLOAT *a, *b, *c;
|
||||||
FLOAT alpha[] = {1.0, 1.0};
|
FLOAT alpha[] = {1.0, 0.0};
|
||||||
FLOAT beta [] = {0.0, 0.0};
|
FLOAT beta [] = {0.0, 0.0};
|
||||||
char trans='N';
|
char transa = 'N';
|
||||||
blasint m, n, i, j;
|
char transb = 'N';
|
||||||
|
blasint m, n, k, i, j, lda, ldb, ldc;
|
||||||
int loops = 1;
|
int loops = 1;
|
||||||
int has_param_n=0;
|
int has_param_m = 0;
|
||||||
int l;
|
int has_param_n = 0;
|
||||||
|
int has_param_k = 0;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
int from = 1;
|
int from = 1;
|
||||||
|
|
@ -135,78 +137,100 @@ int main(int argc, char *argv[]){
|
||||||
int step = 1;
|
int step = 1;
|
||||||
|
|
||||||
struct timeval start, stop;
|
struct timeval start, stop;
|
||||||
double time1,timeg;
|
double time1, timeg;
|
||||||
|
|
||||||
argc--;argv++;
|
argc--;argv++;
|
||||||
|
|
||||||
if (argc > 0) { from = atol(*argv); argc--; argv++;}
|
if (argc > 0) { from = atol(*argv); argc--; argv++; }
|
||||||
if (argc > 0) { to = MAX(atol(*argv), from); argc--; argv++;}
|
if (argc > 0) { to = MAX(atol(*argv), from); argc--; argv++; }
|
||||||
if (argc > 0) { step = atol(*argv); argc--; argv++;}
|
if (argc > 0) { step = atol(*argv); argc--; argv++; }
|
||||||
|
|
||||||
if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
|
if ((p = getenv("OPENBLAS_TRANS"))) {
|
||||||
|
transa=*p;
|
||||||
fprintf(stderr, "From : %3d To : %3d Step=%d : Trans=%c\n", from, to, step, trans);
|
transb=*p;
|
||||||
|
|
||||||
if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
|
|
||||||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
|
||||||
}
|
}
|
||||||
|
if ((p = getenv("OPENBLAS_TRANSA"))) {
|
||||||
if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
|
transa=*p;
|
||||||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
|
||||||
}
|
}
|
||||||
|
if ((p = getenv("OPENBLAS_TRANSB"))) {
|
||||||
if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
|
transb=*p;
|
||||||
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
|
||||||
}
|
}
|
||||||
|
TOUPPER(transa);
|
||||||
|
TOUPPER(transb);
|
||||||
|
|
||||||
|
fprintf(stderr, "From : %3d To : %3d Step=%d : Transa=%c : Transb=%c\n", from, to, step, transa, transb);
|
||||||
|
|
||||||
p = getenv("OPENBLAS_LOOPS");
|
p = getenv("OPENBLAS_LOOPS");
|
||||||
if ( p != NULL )
|
if ( p != NULL ) {
|
||||||
loops = atoi(p);
|
loops = atoi(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((p = getenv("OPENBLAS_PARAM_M"))) {
|
||||||
|
m = atoi(p);
|
||||||
|
has_param_m=1;
|
||||||
|
} else {
|
||||||
|
m = to;
|
||||||
|
}
|
||||||
if ((p = getenv("OPENBLAS_PARAM_N"))) {
|
if ((p = getenv("OPENBLAS_PARAM_N"))) {
|
||||||
n = atoi(p);
|
n = atoi(p);
|
||||||
has_param_n=1;
|
has_param_n=1;
|
||||||
|
} else {
|
||||||
|
n = to;
|
||||||
|
}
|
||||||
|
if ((p = getenv("OPENBLAS_PARAM_K"))) {
|
||||||
|
k = atoi(p);
|
||||||
|
has_param_k=1;
|
||||||
|
} else {
|
||||||
|
k = to;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (( a = (FLOAT *)malloc(sizeof(FLOAT) * m * k * COMPSIZE)) == NULL) {
|
||||||
|
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||||
|
}
|
||||||
|
if (( b = (FLOAT *)malloc(sizeof(FLOAT) * k * n * COMPSIZE)) == NULL) {
|
||||||
|
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||||
|
}
|
||||||
|
if (( c = (FLOAT *)malloc(sizeof(FLOAT) * m * n * COMPSIZE)) == NULL) {
|
||||||
|
fprintf(stderr,"Out of Memory!!\n");exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef linux
|
#ifdef linux
|
||||||
srandom(getpid());
|
srandom(getpid());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for(j = 0; j < to; j++){
|
for (i = 0; i < m * k * COMPSIZE; i++) {
|
||||||
for(i = 0; i < to * COMPSIZE; i++){
|
a[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
|
||||||
a[i + j * to * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
|
|
||||||
b[i + j * to * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
|
|
||||||
c[i + j * to * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
|
|
||||||
}
|
}
|
||||||
|
for (i = 0; i < k * n * COMPSIZE; i++) {
|
||||||
|
b[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
|
||||||
|
}
|
||||||
|
for (i = 0; i < m * n * COMPSIZE; i++) {
|
||||||
|
c[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fprintf(stderr, " SIZE Flops Time\n");
|
fprintf(stderr, " SIZE Flops Time\n");
|
||||||
|
|
||||||
for(m = from; m <= to; m += step)
|
for (i = from; i <= to; i += step) {
|
||||||
{
|
|
||||||
|
|
||||||
timeg=0;
|
timeg=0;
|
||||||
|
|
||||||
if ( has_param_n == 1 && n <= m )
|
if (!has_param_m) { m = i; }
|
||||||
n=n;
|
if (!has_param_n) { n = i; }
|
||||||
else
|
if (!has_param_k) { k = i; }
|
||||||
n=m;
|
|
||||||
|
|
||||||
|
if (transa == 'N') { lda = m; }
|
||||||
|
else { lda = k; }
|
||||||
|
if (transb == 'N') { ldb = k; }
|
||||||
|
else { ldb = n; }
|
||||||
|
ldc = m;
|
||||||
|
|
||||||
|
fprintf(stderr, " M=%4d, N=%4d, K=%4d : ", (int)m, (int)n, (int)k);
|
||||||
fprintf(stderr, " %6dx%d : ", (int)m, (int)n);
|
|
||||||
gettimeofday( &start, (struct timezone *)0);
|
gettimeofday( &start, (struct timezone *)0);
|
||||||
|
|
||||||
for (l=0; l<loops; l++)
|
for (j=0; j<loops; j++) {
|
||||||
{
|
GEMM (&transa, &transb, &m, &n, &k, alpha, a, &lda, b, &ldb, beta, c, &ldc);
|
||||||
|
|
||||||
GEMM (&trans, &trans, &m, &n, &m, alpha, a, &m, b, &m, beta, c, &m );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gettimeofday( &stop, (struct timezone *)0);
|
gettimeofday( &stop, (struct timezone *)0);
|
||||||
time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
|
time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
|
||||||
|
|
||||||
|
|
|
||||||
168
cblas.h
168
cblas.h
|
|
@ -57,45 +57,45 @@ double cblas_dsdot (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_
|
||||||
float cblas_sdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy);
|
float cblas_sdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy);
|
||||||
double cblas_ddot(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy);
|
double cblas_ddot(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
openblas_complex_float cblas_cdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy);
|
openblas_complex_float cblas_cdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy);
|
||||||
openblas_complex_float cblas_cdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy);
|
openblas_complex_float cblas_cdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy);
|
||||||
openblas_complex_double cblas_zdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy);
|
openblas_complex_double cblas_zdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy);
|
||||||
openblas_complex_double cblas_zdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy);
|
openblas_complex_double cblas_zdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_cdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy, openblas_complex_float *ret);
|
void cblas_cdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret);
|
||||||
void cblas_cdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy, openblas_complex_float *ret);
|
void cblas_cdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret);
|
||||||
void cblas_zdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy, openblas_complex_double *ret);
|
void cblas_zdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret);
|
||||||
void cblas_zdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy, openblas_complex_double *ret);
|
void cblas_zdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret);
|
||||||
|
|
||||||
float cblas_sasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx);
|
float cblas_sasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx);
|
||||||
double cblas_dasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx);
|
double cblas_dasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx);
|
||||||
float cblas_scasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx);
|
float cblas_scasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx);
|
||||||
double cblas_dzasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx);
|
double cblas_dzasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx);
|
||||||
|
|
||||||
float cblas_snrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX);
|
float cblas_snrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX);
|
||||||
double cblas_dnrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX);
|
double cblas_dnrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX);
|
||||||
float cblas_scnrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX);
|
float cblas_scnrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX);
|
||||||
double cblas_dznrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX);
|
double cblas_dznrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
CBLAS_INDEX cblas_isamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx);
|
CBLAS_INDEX cblas_isamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx);
|
||||||
CBLAS_INDEX cblas_idamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx);
|
CBLAS_INDEX cblas_idamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx);
|
||||||
CBLAS_INDEX cblas_icamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx);
|
CBLAS_INDEX cblas_icamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx);
|
||||||
CBLAS_INDEX cblas_izamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx);
|
CBLAS_INDEX cblas_izamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx);
|
||||||
|
|
||||||
void cblas_saxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
void cblas_saxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_daxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_daxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_caxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
void cblas_caxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_zaxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_zaxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_scopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
void cblas_scopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_dcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_dcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_ccopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
void cblas_ccopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_zcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_zcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_sswap(OPENBLAS_CONST blasint n, float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
void cblas_sswap(OPENBLAS_CONST blasint n, float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_dswap(OPENBLAS_CONST blasint n, double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_dswap(OPENBLAS_CONST blasint n, double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_cswap(OPENBLAS_CONST blasint n, float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy);
|
void cblas_cswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_zswap(OPENBLAS_CONST blasint n, double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_zswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_srot(OPENBLAS_CONST blasint N, float *X, OPENBLAS_CONST blasint incX, float *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float c, OPENBLAS_CONST float s);
|
void cblas_srot(OPENBLAS_CONST blasint N, float *X, OPENBLAS_CONST blasint incX, float *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float c, OPENBLAS_CONST float s);
|
||||||
void cblas_drot(OPENBLAS_CONST blasint N, double *X, OPENBLAS_CONST blasint incX, double *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double c, OPENBLAS_CONST double s);
|
void cblas_drot(OPENBLAS_CONST blasint N, double *X, OPENBLAS_CONST blasint incX, double *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double c, OPENBLAS_CONST double s);
|
||||||
|
|
@ -111,59 +111,59 @@ void cblas_drotmg(double *d1, double *d2, double *b1, OPENBLAS_CONST double b2,
|
||||||
|
|
||||||
void cblas_sscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, float *X, OPENBLAS_CONST blasint incX);
|
void cblas_sscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, float *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_dscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, double *X, OPENBLAS_CONST blasint incX);
|
void cblas_dscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, double *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_cscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, float *X, OPENBLAS_CONST blasint incX);
|
void cblas_cscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_zscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, double *X, OPENBLAS_CONST blasint incX);
|
void cblas_zscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_csscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, float *X, OPENBLAS_CONST blasint incX);
|
void cblas_csscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_zdscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, double *X, OPENBLAS_CONST blasint incX);
|
void cblas_zdscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
void cblas_sgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
void cblas_sgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
||||||
OPENBLAS_CONST float alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy);
|
OPENBLAS_CONST float alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_dgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
void cblas_dgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
||||||
OPENBLAS_CONST double alpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy);
|
OPENBLAS_CONST double alpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_cgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
void cblas_cgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *beta, float *y, OPENBLAS_CONST blasint incy);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy);
|
||||||
void cblas_zgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
void cblas_zgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *beta, double *y, OPENBLAS_CONST blasint incy);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_sger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda);
|
void cblas_sger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_dger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda);
|
void cblas_dger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_cgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda);
|
void cblas_cgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_cgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda);
|
void cblas_cgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_zgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda);
|
void cblas_zgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_zgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda);
|
void cblas_zgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda);
|
||||||
|
|
||||||
void cblas_strsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
void cblas_strsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_dtrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
void cblas_dtrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ctrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
void cblas_ctrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ztrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
void cblas_ztrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
void cblas_strmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
void cblas_strmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_dtrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
void cblas_dtrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ctrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
void cblas_ctrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ztrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
void cblas_ztrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
void cblas_ssyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A, OPENBLAS_CONST blasint lda);
|
void cblas_ssyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_dsyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *A, OPENBLAS_CONST blasint lda);
|
void cblas_dsyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_cher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A, OPENBLAS_CONST blasint lda);
|
void cblas_cher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_zher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *A, OPENBLAS_CONST blasint lda);
|
void cblas_zher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda);
|
||||||
|
|
||||||
void cblas_ssyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo,OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X,
|
void cblas_ssyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo,OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X,
|
||||||
OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda);
|
OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_dsyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X,
|
void cblas_dsyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X,
|
||||||
OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda);
|
OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_cher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX,
|
void cblas_cher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX,
|
||||||
OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda);
|
OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda);
|
||||||
void cblas_zher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX,
|
void cblas_zher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX,
|
||||||
OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda);
|
OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda);
|
||||||
|
|
||||||
void cblas_sgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_sgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_dgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_dgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_cgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_cgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_zgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_zgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
|
|
||||||
void cblas_ssbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A,
|
void cblas_ssbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A,
|
||||||
OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY);
|
||||||
|
|
@ -176,45 +176,45 @@ void cblas_stbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLA
|
||||||
void cblas_dtbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_dtbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ctbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ctbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ztbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ztbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
void cblas_stbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_stbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_dtbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_dtbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ctbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ctbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ztbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ztbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
void cblas_stpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_stpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_dtpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_dtpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ctpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ctpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ztpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ztpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
void cblas_stpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_stpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_dtpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_dtpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ctpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ctpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX);
|
||||||
void cblas_ztpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
void cblas_ztpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX);
|
||||||
|
|
||||||
void cblas_ssymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A,
|
void cblas_ssymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A,
|
||||||
OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_dsymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A,
|
void cblas_dsymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A,
|
||||||
OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_chemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A,
|
void cblas_chemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A,
|
||||||
OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_zhemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A,
|
void cblas_zhemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A,
|
||||||
OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
|
|
||||||
|
|
||||||
void cblas_sspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *Ap,
|
void cblas_sspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *Ap,
|
||||||
|
|
@ -225,36 +225,36 @@ void cblas_dspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLA
|
||||||
void cblas_sspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *Ap);
|
void cblas_sspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *Ap);
|
||||||
void cblas_dspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *Ap);
|
void cblas_dspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *Ap);
|
||||||
|
|
||||||
void cblas_chpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A);
|
void cblas_chpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A);
|
||||||
void cblas_zhpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X,OPENBLAS_CONST blasint incX, double *A);
|
void cblas_zhpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X,OPENBLAS_CONST blasint incX, void *A);
|
||||||
|
|
||||||
void cblas_sspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A);
|
void cblas_sspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A);
|
||||||
void cblas_dspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A);
|
void cblas_dspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A);
|
||||||
void cblas_chpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *Ap);
|
void cblas_chpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap);
|
||||||
void cblas_zhpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *Ap);
|
void cblas_zhpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap);
|
||||||
|
|
||||||
void cblas_chbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_chbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_zhbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_zhbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
|
|
||||||
void cblas_chpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N,
|
void cblas_chpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *Ap, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
void cblas_zhpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N,
|
void cblas_zhpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *Ap, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY);
|
||||||
|
|
||||||
void cblas_sgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_sgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_dgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_dgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_cgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_cgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
|
|
||||||
|
|
||||||
void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
|
|
@ -262,60 +262,60 @@ void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLA
|
||||||
void cblas_dsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_dsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_csymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_csymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_zsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
|
|
||||||
void cblas_ssyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_ssyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_dsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_dsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_csyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_csyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_zsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
|
|
||||||
void cblas_ssyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_ssyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_dsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_dsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_csyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_csyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
void cblas_zsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans,
|
||||||
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
|
|
||||||
void cblas_strmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_strmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb);
|
||||||
void cblas_dtrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_dtrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb);
|
||||||
void cblas_ctrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_ctrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb);
|
||||||
void cblas_ztrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_ztrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb);
|
||||||
|
|
||||||
void cblas_strsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_strsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb);
|
||||||
void cblas_dtrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_dtrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb);
|
||||||
void cblas_ctrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_ctrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb);
|
||||||
void cblas_ztrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
void cblas_ztrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA,
|
||||||
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb);
|
OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb);
|
||||||
|
|
||||||
void cblas_chemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_chemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zhemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
void cblas_zhemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
|
|
||||||
void cblas_cherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_cherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST float alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_zherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST double alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
|
|
||||||
void cblas_cher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_cher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
void cblas_zher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
void cblas_zher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
|
||||||
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc);
|
OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc);
|
||||||
|
|
||||||
void cblas_xerbla(blasint p, char *rout, char *form, ...);
|
void cblas_xerbla(blasint p, char *rout, char *form, ...);
|
||||||
|
|
||||||
|
|
@ -325,9 +325,9 @@ void cblas_saxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS
|
||||||
|
|
||||||
void cblas_daxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_daxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_caxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST float *beta, float *y, OPENBLAS_CONST blasint incy);
|
void cblas_caxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_zaxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST double *beta, double *y, OPENBLAS_CONST blasint incy);
|
void cblas_zaxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy);
|
||||||
|
|
||||||
void cblas_somatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, OPENBLAS_CONST float *a,
|
void cblas_somatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, OPENBLAS_CONST float *a,
|
||||||
OPENBLAS_CONST blasint clda, float *b, OPENBLAS_CONST blasint cldb);
|
OPENBLAS_CONST blasint clda, float *b, OPENBLAS_CONST blasint cldb);
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
## Description: Ported from portion of OpenBLAS/Makefile.system
|
## Description: Ported from portion of OpenBLAS/Makefile.system
|
||||||
## Sets various variables based on architecture.
|
## Sets various variables based on architecture.
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64")
|
if (X86 OR X86_64)
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "x86")
|
if (X86)
|
||||||
if (NOT BINARY)
|
if (NOT BINARY)
|
||||||
set(NO_BINARY_MODE 1)
|
set(NO_BINARY_MODE 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
@ -33,41 +33,22 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (USE_OPENMP)
|
if (USE_OPENMP)
|
||||||
|
# USE_SIMPLE_THREADED_LEVEL3 = 1
|
||||||
if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LSB")
|
# NO_AFFINITY = 1
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp")
|
find_package(OpenMP REQUIRED)
|
||||||
endif ()
|
if (OpenMP_FOUND)
|
||||||
|
set(CCOMMON_OPT "${CCOMMON_OPT} ${OpenMP_C_FLAGS} -DUSE_OPENMP")
|
||||||
if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
|
set(FCOMMON_OPT "${FCOMMON_OPT} ${OpenMP_Fortran_FLAGS}")
|
||||||
message(WARNING "Clang doesn't support OpenMP yet.")
|
endif()
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
|
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -openmp")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI")
|
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -mp")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${CMAKE_C_COMPILER_ID} STREQUAL "OPEN64")
|
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -mp")
|
|
||||||
set(CEXTRALIB "${CEXTRALIB} -lstdc++")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${CMAKE_C_COMPILER_ID} STREQUAL "PATHSCALE")
|
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -mp")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
if (DYNAMIC_ARCH)
|
if (DYNAMIC_ARCH)
|
||||||
if (${ARCH} STREQUAL "x86")
|
if (X86)
|
||||||
set(DYNAMIC_CORE KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO)
|
set(DYNAMIC_CORE KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "x86_64")
|
if (X86_64)
|
||||||
set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO)
|
set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO)
|
||||||
if (NOT NO_AVX)
|
if (NOT NO_AVX)
|
||||||
set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR)
|
set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR)
|
||||||
|
|
@ -94,7 +75,7 @@ if (${ARCH} STREQUAL "ia64")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "mips64")
|
if (MIPS64)
|
||||||
set(NO_BINARY_MODE 1)
|
set(NO_BINARY_MODE 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
@ -103,12 +84,12 @@ if (${ARCH} STREQUAL "alpha")
|
||||||
set(BINARY_DEFINED 1)
|
set(BINARY_DEFINED 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "arm")
|
if (ARM)
|
||||||
set(NO_BINARY_MODE 1)
|
set(NO_BINARY_MODE 1)
|
||||||
set(BINARY_DEFINED 1)
|
set(BINARY_DEFINED 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "arm64")
|
if (ARM64)
|
||||||
set(NO_BINARY_MODE 1)
|
set(NO_BINARY_MODE 1)
|
||||||
set(BINARY_DEFINED 1)
|
set(BINARY_DEFINED 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
||||||
##
|
|
||||||
## Author: Hank Anderson <hank@statease.com>
|
|
||||||
## Description: Ported from the OpenBLAS/c_check perl script.
|
|
||||||
## This is triggered by prebuild.cmake and runs before any of the code is built.
|
|
||||||
## Creates config.h and Makefile.conf.
|
|
||||||
|
|
||||||
# CMake vars set by this file:
|
|
||||||
# OSNAME (use CMAKE_SYSTEM_NAME)
|
|
||||||
# ARCH
|
|
||||||
# C_COMPILER (use CMAKE_C_COMPILER)
|
|
||||||
# BINARY32
|
|
||||||
# BINARY64
|
|
||||||
# FU
|
|
||||||
# CROSS_SUFFIX
|
|
||||||
# CROSS
|
|
||||||
# CEXTRALIB
|
|
||||||
|
|
||||||
# Defines set by this file:
|
|
||||||
# OS_
|
|
||||||
# ARCH_
|
|
||||||
# C_
|
|
||||||
# __32BIT__
|
|
||||||
# __64BIT__
|
|
||||||
# FUNDERSCORE
|
|
||||||
# PTHREAD_CREATE_FUNC
|
|
||||||
|
|
||||||
# N.B. c_check (and ctest.c) is not cross-platform, so instead try to use CMake variables.
|
|
||||||
set(FU "")
|
|
||||||
if(APPLE)
|
|
||||||
set(FU "_")
|
|
||||||
elseif(MSVC AND ${CMAKE_C_COMPILER_ID} MATCHES "Clang")
|
|
||||||
set(FU "")
|
|
||||||
elseif(MSVC)
|
|
||||||
set(FU "_")
|
|
||||||
elseif(UNIX)
|
|
||||||
set(FU "")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Convert CMake vars into the format that OpenBLAS expects
|
|
||||||
string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS)
|
|
||||||
if (${HOST_OS} STREQUAL "WINDOWS")
|
|
||||||
set(HOST_OS WINNT)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# added by hpa - check size of void ptr to detect 64-bit compile
|
|
||||||
if (NOT DEFINED BINARY)
|
|
||||||
set(BINARY 32)
|
|
||||||
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
||||||
set(BINARY 64)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (BINARY EQUAL 64)
|
|
||||||
set(BINARY64 1)
|
|
||||||
else ()
|
|
||||||
set(BINARY32 1)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# CMake docs define these:
|
|
||||||
# CMAKE_SYSTEM_PROCESSOR - The name of the CPU CMake is building for.
|
|
||||||
# CMAKE_HOST_SYSTEM_PROCESSOR - The name of the CPU CMake is running on.
|
|
||||||
#
|
|
||||||
# TODO: CMAKE_SYSTEM_PROCESSOR doesn't seem to be correct - instead get it from the compiler a la c_check
|
|
||||||
set(ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Target Architecture")
|
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "AMD64")
|
|
||||||
set(ARCH "x86_64")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# If you are using a 32-bit compiler on a 64-bit system CMAKE_SYSTEM_PROCESSOR will be wrong
|
|
||||||
if (${ARCH} STREQUAL "x86_64" AND BINARY EQUAL 32)
|
|
||||||
set(ARCH x86)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "X86")
|
|
||||||
set(ARCH x86)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${ARCH} MATCHES "ppc")
|
|
||||||
set(ARCH power)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID})
|
|
||||||
if (${COMPILER_ID} STREQUAL "GNU")
|
|
||||||
set(COMPILER_ID "GCC")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
string(TOUPPER ${ARCH} UC_ARCH)
|
|
||||||
|
|
||||||
file(WRITE ${TARGET_CONF_TEMP}
|
|
||||||
"#define OS_${HOST_OS}\t1\n"
|
|
||||||
"#define ARCH_${UC_ARCH}\t1\n"
|
|
||||||
"#define C_${COMPILER_ID}\t1\n"
|
|
||||||
"#define __${BINARY}BIT__\t1\n"
|
|
||||||
"#define FUNDERSCORE\t${FU}\n")
|
|
||||||
|
|
||||||
if (${HOST_OS} STREQUAL "WINDOWSSTORE")
|
|
||||||
file(APPEND ${TARGET_CONF_TEMP}
|
|
||||||
"#define OS_WINNT\t1\n")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
@ -15,7 +15,7 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR
|
||||||
|
|
||||||
if (NO_BINARY_MODE)
|
if (NO_BINARY_MODE)
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "mips64")
|
if (MIPS64)
|
||||||
if (BINARY64)
|
if (BINARY64)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64")
|
||||||
else ()
|
else ()
|
||||||
|
|
@ -24,17 +24,12 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR
|
||||||
set(BINARY_DEFINED 1)
|
set(BINARY_DEFINED 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${CORE} STREQUAL "LOONGSON3A")
|
if (${CORE} STREQUAL "LOONGSON3A" OR ${CORE} STREQUAL "LOONGSON3B")
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64")
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${CORE} STREQUAL "LOONGSON3B")
|
if (CMAKE_SYSTEM_NAME STREQUAL "AIX")
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64")
|
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${OSNAME} STREQUAL "AIX")
|
|
||||||
set(BINARY_DEFINED 1)
|
set(BINARY_DEFINED 1)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
@ -66,7 +61,7 @@ endif ()
|
||||||
|
|
||||||
if (${CMAKE_C_COMPILER} STREQUAL "OPEN64")
|
if (${CMAKE_C_COMPILER} STREQUAL "OPEN64")
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "mips64")
|
if (MIPS64)
|
||||||
|
|
||||||
if (NOT BINARY64)
|
if (NOT BINARY64)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -n32")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -n32")
|
||||||
|
|
@ -94,10 +89,10 @@ endif ()
|
||||||
|
|
||||||
if (${CMAKE_C_COMPILER} STREQUAL "SUN")
|
if (${CMAKE_C_COMPILER} STREQUAL "SUN")
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -w")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -w")
|
||||||
if (${ARCH} STREQUAL "x86")
|
if (X86)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -m32")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -m32")
|
||||||
else ()
|
else ()
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -m64")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,6 @@
|
||||||
# NEEDBUNDERSCORE
|
# NEEDBUNDERSCORE
|
||||||
# NEED2UNDERSCORES
|
# NEED2UNDERSCORES
|
||||||
|
|
||||||
if (MSVC)
|
|
||||||
# had to do this for MSVC, else CMake automatically assumes I have ifort... -hpa
|
|
||||||
include(CMakeForceCompiler)
|
|
||||||
CMAKE_FORCE_Fortran_COMPILER(gfortran GNU)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (NOT NO_LAPACK)
|
if (NOT NO_LAPACK)
|
||||||
enable_language(Fortran)
|
enable_language(Fortran)
|
||||||
else()
|
else()
|
||||||
|
|
@ -34,11 +28,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT ONLY_CBLAS)
|
if (NOT ONLY_CBLAS)
|
||||||
# N.B. f_check is not cross-platform, so instead try to use CMake variables
|
|
||||||
# run f_check (appends to TARGET files)
|
# run f_check (appends to TARGET files)
|
||||||
# message(STATUS "Running f_check...")
|
|
||||||
# execute_process(COMMAND perl f_check ${TARGET_MAKE} ${TARGET_CONF} ${CMAKE_Fortran_COMPILER}
|
|
||||||
# WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
|
||||||
|
|
||||||
# TODO: detect whether underscore needed, set #defines and BU appropriately - use try_compile
|
# TODO: detect whether underscore needed, set #defines and BU appropriately - use try_compile
|
||||||
# TODO: set FEXTRALIB flags a la f_check?
|
# TODO: set FEXTRALIB flags a la f_check?
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,9 @@
|
||||||
|
|
||||||
if (${F_COMPILER} STREQUAL "FLANG")
|
if (${F_COMPILER} STREQUAL "FLANG")
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FLANG")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FLANG")
|
||||||
if (BINARY64)
|
if (BINARY64 AND INTERFACE64)
|
||||||
if (INTERFACE64)
|
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -i8")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -i8")
|
||||||
endif ()
|
endif ()
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -Wall")
|
|
||||||
else ()
|
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -Wall")
|
|
||||||
endif ()
|
|
||||||
if (USE_OPENMP)
|
if (USE_OPENMP)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
@ -50,7 +45,7 @@ if (${F_COMPILER} STREQUAL "GFORTRAN")
|
||||||
set(EXTRALIB "{EXTRALIB} -lgfortran")
|
set(EXTRALIB "{EXTRALIB} -lgfortran")
|
||||||
endif ()
|
endif ()
|
||||||
if (NO_BINARY_MODE)
|
if (NO_BINARY_MODE)
|
||||||
if (${ARCH} STREQUAL "mips64")
|
if (MIPS64)
|
||||||
if (BINARY64)
|
if (BINARY64)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64")
|
||||||
else ()
|
else ()
|
||||||
|
|
@ -130,7 +125,7 @@ if (${F_COMPILER} STREQUAL "PATHSCALE")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT ${ARCH} STREQUAL "mips64")
|
if (NOT MIPS64)
|
||||||
if (NOT BINARY64)
|
if (NOT BINARY64)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -m32")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -m32")
|
||||||
else ()
|
else ()
|
||||||
|
|
@ -158,7 +153,7 @@ if (${F_COMPILER} STREQUAL "OPEN64")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "mips64")
|
if (MIPS64)
|
||||||
|
|
||||||
if (NOT BINARY64)
|
if (NOT BINARY64)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -n32")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -n32")
|
||||||
|
|
@ -189,7 +184,7 @@ endif ()
|
||||||
|
|
||||||
if (${F_COMPILER} STREQUAL "SUN")
|
if (${F_COMPILER} STREQUAL "SUN")
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN")
|
||||||
if (${ARCH} STREQUAL "x86")
|
if (X86)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -m32")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -m32")
|
||||||
else ()
|
else ()
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
# Sources for compiling lapack-netlib. Can't use CMakeLists.txt because lapack-netlib already has its own cmake files.
|
# Sources for compiling lapack-netlib. Can't use CMakeLists.txt because lapack-netlib already has its own cmake files.
|
||||||
|
|
||||||
set(ALLAUX
|
set(ALLAUX ilaenv.f ilaenv2stage.f ieeeck.f lsamen.f iparmq.f iparam2stage.F
|
||||||
ilaenv.f ieeeck.f lsamen.f xerbla_array.f iparmq.f
|
ilaprec.f ilatrans.f ilauplo.f iladiag.f chla_transtype.f
|
||||||
ilaprec.f ilatrans.f ilauplo.f iladiag.f iparam2stage.F chla_transtype.f
|
../INSTALL/ilaver.f xerbla_array.f
|
||||||
../INSTALL/ilaver.f ../INSTALL/slamch.f
|
../INSTALL/slamch.f)
|
||||||
)
|
|
||||||
|
|
||||||
set(SCLAUX
|
set(SCLAUX
|
||||||
sbdsdc.f
|
sbdsdc.f
|
||||||
|
|
@ -22,11 +21,10 @@ set(SCLAUX
|
||||||
slasr.f slasrt.f slassq.f slasv2.f spttrf.f sstebz.f sstedc.f
|
slasr.f slasrt.f slassq.f slasv2.f spttrf.f sstebz.f sstedc.f
|
||||||
ssteqr.f ssterf.f slaisnan.f sisnan.f
|
ssteqr.f ssterf.f slaisnan.f sisnan.f
|
||||||
slartgp.f slartgs.f
|
slartgp.f slartgs.f
|
||||||
../INSTALL/second_${TIMER}.f
|
../INSTALL/second_${TIMER}.f)
|
||||||
)
|
|
||||||
|
|
||||||
set(DZLAUX
|
set(DZLAUX
|
||||||
dbdsdc.f dbdsvdx.f
|
dbdsdc.f
|
||||||
dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f
|
dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f
|
||||||
dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f
|
dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f
|
||||||
dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f
|
dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f
|
||||||
|
|
@ -41,43 +39,36 @@ set(DZLAUX
|
||||||
dlasr.f dlasrt.f dlassq.f dlasv2.f dpttrf.f dstebz.f dstedc.f
|
dlasr.f dlasrt.f dlassq.f dlasv2.f dpttrf.f dstebz.f dstedc.f
|
||||||
dsteqr.f dsterf.f dlaisnan.f disnan.f
|
dsteqr.f dsterf.f dlaisnan.f disnan.f
|
||||||
dlartgp.f dlartgs.f
|
dlartgp.f dlartgs.f
|
||||||
../INSTALL/dlamch.f ../INSTALL/dsecnd_${TIMER}.f
|
../INSTALL/dlamch.f ../INSTALL/dsecnd_${TIMER}.f)
|
||||||
dgelq.f dgelqt.f dgelqt3.f dgemlq.f dgemlqt.f dgemqr.f dgeqr.f
|
|
||||||
dgetsls.f dlamswlq.f dlamtsqr.f dlaswlq.f dlatsqr.f dtplqt.f
|
|
||||||
dtplqt2.f dtpmlqt.f dsysv_aa.f dsytrf_aa.f dsytrs_aa.f dlasyf_aa.f
|
|
||||||
dsytf2_rk.f dlasyf_rk.f dsytrf_rk.f dsytrs_3.f dsycon_3.f dsytri_3.f
|
|
||||||
dsytri_3x.f dsysv_rk.f dsb2st_kernels.f dsbev_2stage.f dsbevd_2stage.f
|
|
||||||
dsbevx_2stage.f dsyev_2stage.f dsyevd_2stage.f dsyevr_2stage.f
|
|
||||||
dsyevx_2stage.f dsygv_2stage.f dsytrd_2stage.f dsytrd_sb2st.F
|
|
||||||
dsytrd_sy2sb.f dlarfy.f
|
|
||||||
)
|
|
||||||
|
|
||||||
set(SLASRC
|
set(SLASRC
|
||||||
sbdsvdx.f sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f
|
sbdsvdx.f sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f
|
||||||
sgbsvx.f sgbtf2.f sgbtrf.f sgbtrs.f sgebak.f sgebal.f sgebd2.f
|
sgbsvx.f sgbtf2.f sgbtrf.f sgbtrs.f sgebak.f sgebal.f sgebd2.f
|
||||||
sgebrd.f sgecon.f sgeequ.f sgees.f sgeesx.f sgeev.f sgeevx.f
|
sgebrd.f sgecon.f sgeequ.f sgees.f sgeesx.f sgeev.f sgeevx.f
|
||||||
DEPRECATED/sgegs.f DEPRECATED/sgegv.f sgehd2.f sgehrd.f sgelq2.f sgelqf.f
|
sgehd2.f sgehrd.f sgelq2.f sgelqf.f
|
||||||
sgels.f sgelsd.f sgelss.f DEPRECATED/sgelsx.f sgelsy.f sgeql2.f sgeqlf.f
|
sgels.f sgelsd.f sgelss.f sgelsy.f sgeql2.f sgeqlf.f
|
||||||
sgeqp3.f DEPRECATED/sgeqpf.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f
|
sgeqp3.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f sgerq2.f sgerqf.f
|
||||||
sgerq2.f sgerqf.f sgesc2.f sgesdd.f sgesvd.f sgesvdx.f sgesvx.f
|
sgesc2.f sgesdd.f sgesvd.f sgesvdx.f sgesvx.f sgetc2.f
|
||||||
sgetc2.f sgetri.f sgetrf2.f
|
sgetrf2.f sgetri.f
|
||||||
sggbak.f sggbal.f sgghd3.f sgges.f sgges3.f sggesx.f sggev.f sggev3.f sggevx.f
|
sggbak.f sggbal.f
|
||||||
sggglm.f sgghrd.f sgglse.f sggqrf.f
|
sgges.f sgges3.f sggesx.f sggev.f sggev3.f sggevx.f
|
||||||
sggrqf.f DEPRECATED/sggsvd.f sggsvd3.f DEPRECATED/sggsvp.f sggsvp3.f sgtcon.f sgtrfs.f sgtsv.f
|
sggglm.f sgghrd.f sgghd3.f sgglse.f sggqrf.f
|
||||||
|
sggrqf.f sggsvd3.f sggsvp3.f sgtcon.f sgtrfs.f sgtsv.f
|
||||||
sgtsvx.f sgttrf.f sgttrs.f sgtts2.f shgeqz.f
|
sgtsvx.f sgttrf.f sgttrs.f sgtts2.f shgeqz.f
|
||||||
shsein.f shseqr.f slabrd.f slacon.f slacn2.f
|
shsein.f shseqr.f slabrd.f slacon.f slacn2.f
|
||||||
slaein.f slaexc.f slag2.f slags2.f slagtm.f slagv2.f slahqr.f
|
slaein.f slaexc.f slag2.f slags2.f slagtm.f slagv2.f slahqr.f
|
||||||
DEPRECATED/slahrd.f slahr2.f slaic1.f slaln2.f slals0.f slalsa.f slalsd.f
|
slahr2.f slaic1.f slaln2.f slals0.f slalsa.f slalsd.f
|
||||||
slangb.f slange.f slangt.f slanhs.f slansb.f slansp.f
|
slangb.f slange.f slangt.f slanhs.f slansb.f slansp.f
|
||||||
slansy.f slantb.f slantp.f slantr.f slanv2.f
|
slansy.f slantb.f slantp.f slantr.f slanv2.f
|
||||||
slapll.f slapmt.f
|
slapll.f slapmt.f
|
||||||
slaqgb.f slaqge.f slaqp2.f slaqps.f slaqsb.f slaqsp.f slaqsy.f
|
slaqgb.f slaqge.f slaqp2.f slaqps.f slaqsb.f slaqsp.f slaqsy.f
|
||||||
slaqr0.f slaqr1.f slaqr2.f slaqr3.f slaqr4.f slaqr5.f
|
slaqr0.f slaqr1.f slaqr2.f slaqr3.f slaqr4.f slaqr5.f
|
||||||
slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f
|
slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f
|
||||||
slarf.f slarfb.f slarfg.f slarfgp.f slarft.f slarfx.f slargv.f
|
slarf.f slarfb.f slarfg.f slarfgp.f slarft.f slarfx.f slarfy.f slargv.f
|
||||||
slarrv.f slartv.f
|
slarrv.f slartv.f
|
||||||
slarz.f slarzb.f slarzt.f slasy2.f slasyf.f slasyf_rook.f
|
slarz.f slarzb.f slarzt.f slasy2.f
|
||||||
slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f DEPRECATED/slatzm.f
|
slasyf.f slasyf_rook.f slasyf_rk.f slasyf_aa.f
|
||||||
|
slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f
|
||||||
sopgtr.f sopmtr.f sorg2l.f sorg2r.f
|
sopgtr.f sopmtr.f sorg2l.f sorg2r.f
|
||||||
sorgbr.f sorghr.f sorgl2.f sorglq.f sorgql.f sorgqr.f sorgr2.f
|
sorgbr.f sorghr.f sorgl2.f sorglq.f sorgql.f sorgqr.f sorgr2.f
|
||||||
sorgrq.f sorgtr.f sorm2l.f sorm2r.f sorm22.f
|
sorgrq.f sorgtr.f sorm2l.f sorm2r.f sorm22.f
|
||||||
|
|
@ -85,7 +76,7 @@ set(SLASRC
|
||||||
sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f
|
sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f
|
||||||
spbstf.f spbsv.f spbsvx.f
|
spbstf.f spbsv.f spbsvx.f
|
||||||
spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f
|
spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f
|
||||||
sposvx.f spstrf.f spstf2.f
|
sposvx.f spotrf2.f spotri.f spstrf.f spstf2.f
|
||||||
sppcon.f sppequ.f
|
sppcon.f sppequ.f
|
||||||
spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f
|
spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f
|
||||||
spteqr.f sptrfs.f sptsv.f sptsvx.f spttrs.f sptts2.f srscl.f
|
spteqr.f sptrfs.f sptsv.f sptsvx.f spttrs.f sptts2.f srscl.f
|
||||||
|
|
@ -93,19 +84,23 @@ set(SLASRC
|
||||||
ssbtrd.f sspcon.f sspev.f sspevd.f sspevx.f sspgst.f
|
ssbtrd.f sspcon.f sspev.f sspevd.f sspevx.f sspgst.f
|
||||||
sspgv.f sspgvd.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f
|
sspgv.f sspgvd.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f
|
||||||
ssptrf.f ssptri.f ssptrs.f sstegr.f sstein.f sstev.f sstevd.f sstevr.f
|
ssptrf.f ssptri.f ssptrs.f sstegr.f sstein.f sstev.f sstevd.f sstevr.f
|
||||||
sstevx.f
|
sstevx.f ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f
|
||||||
ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f
|
|
||||||
ssygst.f ssygv.f ssygvd.f ssygvx.f ssyrfs.f ssysv.f ssysvx.f
|
ssygst.f ssygv.f ssygvd.f ssygvx.f ssyrfs.f ssysv.f ssysvx.f
|
||||||
ssytd2.f ssytf2.f ssytrd.f ssytrf.f ssytri.f ssytri2.f ssytri2x.f
|
ssytd2.f ssytf2.f ssytrd.f ssytrf.f ssytri.f ssytri2.f ssytri2x.f
|
||||||
ssyswapr.f ssytrs.f ssytrs2.f ssyconv.f
|
ssyswapr.f ssytrs.f ssytrs2.f
|
||||||
|
ssyconv.f ssyconvf.f ssyconvf_rook.f
|
||||||
|
ssysv_aa.f ssysv_aa_2stage.f ssytrf_aa.f ssytrf_aa_2stage.f ssytrs_aa.f ssytrs_aa_2stage.f
|
||||||
ssytf2_rook.f ssytrf_rook.f ssytrs_rook.f
|
ssytf2_rook.f ssytrf_rook.f ssytrs_rook.f
|
||||||
ssytri_rook.f ssycon_rook.f ssysv_rook.f
|
ssytri_rook.f ssycon_rook.f ssysv_rook.f
|
||||||
|
ssytf2_rk.f ssytrf_rk.f ssytrs_3.f
|
||||||
|
ssytri_3.f ssytri_3x.f ssycon_3.f ssysv_rk.f
|
||||||
|
ssysv_aa.f ssytrf_aa.f ssytrs_aa.f
|
||||||
stbcon.f
|
stbcon.f
|
||||||
stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f
|
stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f
|
||||||
stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f
|
stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f
|
||||||
stptrs.f
|
stptrs.f
|
||||||
strcon.f strevc.f strevc3.f strexc.f strrfs.f strsen.f strsna.f strsyl.f
|
strcon.f strevc.f strevc3.f strexc.f strrfs.f strsen.f strsna.f strsyl.f
|
||||||
strtrs.f DEPRECATED/stzrqf.f stzrzf.f sstemr.f
|
strtrs.f stzrzf.f sstemr.f
|
||||||
slansf.f spftrf.f spftri.f spftrs.f ssfrk.f stfsm.f stftri.f stfttp.f
|
slansf.f spftrf.f spftri.f spftrs.f ssfrk.f stfsm.f stftri.f stfttp.f
|
||||||
stfttr.f stpttf.f stpttr.f strttf.f strttp.f
|
stfttr.f stpttf.f stpttr.f strttf.f strttp.f
|
||||||
sgejsv.f sgesvj.f sgsvj0.f sgsvj1.f
|
sgejsv.f sgesvj.f sgsvj0.f sgsvj1.f
|
||||||
|
|
@ -113,30 +108,38 @@ set(SLASRC
|
||||||
sbbcsd.f slapmr.f sorbdb.f sorbdb1.f sorbdb2.f sorbdb3.f sorbdb4.f
|
sbbcsd.f slapmr.f sorbdb.f sorbdb1.f sorbdb2.f sorbdb3.f sorbdb4.f
|
||||||
sorbdb5.f sorbdb6.f sorcsd.f sorcsd2by1.f
|
sorbdb5.f sorbdb6.f sorcsd.f sorcsd2by1.f
|
||||||
sgeqrt.f sgeqrt2.f sgeqrt3.f sgemqrt.f
|
sgeqrt.f sgeqrt2.f sgeqrt3.f sgemqrt.f
|
||||||
stpqrt.f stpqrt2.f stpmqrt.f stprfb.f spotri.f
|
stpqrt.f stpqrt2.f stpmqrt.f stprfb.f
|
||||||
sgelq.f sgelqt.f sgelqt3.f sgemlq.f sgemlqt.f sgemqr.f sgeqr.f sgetsls.f
|
sgelqt.f sgelqt3.f sgemlqt.f
|
||||||
slamswlq.f slamtsqr.f slaswlq.f slatsqr.f stplqt.f stplqt2.f stpmlqt.f
|
sgetsls.f sgeqr.f slatsqr.f slamtsqr.f sgemqr.f
|
||||||
ssysv_aa.f ssytrf_aa.f ssytrs_aa.f slasyf_aa.f ssytf2_rk.f slasyf_rk.f
|
sgelq.f slaswlq.f slamswlq.f sgemlq.f
|
||||||
ssytrf_rk.f ssytrs_3.f ssycon_3.f ssytri_3.f ssytri_3x.f ssysv_rk.f
|
stplqt.f stplqt2.f stpmlqt.f
|
||||||
ssb2st_kernels.f ssbev_2stage.f ssbevd_2stage.f ssbevx_2stage.f
|
ssytrd_2stage.f ssytrd_sy2sb.f ssytrd_sb2st.F ssb2st_kernels.f
|
||||||
ssyev_2stage.f ssyevd_2stage.f ssyevr_2stage.f ssyevx_2stage.f
|
ssyevd_2stage.f ssyev_2stage.f ssyevx_2stage.f ssyevr_2stage.f
|
||||||
ssygv_2stage.f ssytrd_2stage.f ssytrd_sb2st.F ssytrd_sy2sb.f slarfy.f
|
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f)
|
||||||
)
|
|
||||||
|
|
||||||
set(DSLASRC spotrs.f spotrf2.f)
|
set(SXLASRC sgesvxx.f sgerfsx.f sla_gerfsx_extended.f sla_geamv.f
|
||||||
|
sla_gercond.f sla_gerpvgrw.f ssysvxx.f ssyrfsx.f
|
||||||
|
sla_syrfsx_extended.f sla_syamv.f sla_syrcond.f sla_syrpvgrw.f
|
||||||
|
sposvxx.f sporfsx.f sla_porfsx_extended.f sla_porcond.f
|
||||||
|
sla_porpvgrw.f sgbsvxx.f sgbrfsx.f sla_gbrfsx_extended.f
|
||||||
|
sla_gbamv.f sla_gbrcond.f sla_gbrpvgrw.f sla_lin_berr.f slarscl2.f
|
||||||
|
slascl2.f sla_wwaddw.f)
|
||||||
|
|
||||||
set(CLASRC
|
set(CLASRC
|
||||||
cbdsqr.f cgbbrd.f cgbcon.f cgbequ.f cgbrfs.f cgbsv.f cgbsvx.f
|
cbdsqr.f cgbbrd.f cgbcon.f cgbequ.f cgbrfs.f cgbsv.f cgbsvx.f
|
||||||
cgbtf2.f cgbtrf.f cgbtrs.f cgebak.f cgebal.f cgebd2.f cgebrd.f
|
cgbtf2.f cgbtrf.f cgbtrs.f cgebak.f cgebal.f cgebd2.f cgebrd.f
|
||||||
cgecon.f cgeequ.f cgees.f cgeesx.f cgeev.f cgeevx.f
|
cgecon.f cgeequ.f cgees.f cgeesx.f cgeev.f cgeevx.f
|
||||||
DEPRECATED/cgegs.f DEPRECATED/cgegv.f cgehd2.f cgehrd.f cgelq2.f cgelqf.f
|
cgehd2.f cgehrd.f cgelq2.f cgelqf.f
|
||||||
cgels.f cgelsd.f cgelss.f DEPRECATED/cgelsx.f cgelsy.f cgeql2.f cgeqlf.f cgeqp3.f
|
cgels.f cgelsd.f cgelss.f cgelsy.f cgeql2.f cgeqlf.f cgeqp3.f
|
||||||
DEPRECATED/cgeqpf.f cgeqr2.f cgeqr2p.f cgeqrf.f cgeqrfp.f cgerfs.f
|
cgeqr2.f cgeqr2p.f cgeqrf.f cgeqrfp.f cgerfs.f cgerq2.f cgerqf.f
|
||||||
cgerq2.f cgerqf.f cgesc2.f cgesdd.f cgesvd.f
|
cgesc2.f cgesdd.f cgesvd.f cgesvdx.f
|
||||||
cgesvx.f cgetc2.f cgetri.f
|
cgesvj.f cgejsv.f cgsvj0.f cgsvj1.f
|
||||||
cggbak.f cggbal.f cgges.f cggesx.f cggev.f cggevx.f cggglm.f
|
cgesvx.f cgetc2.f cgetrf2.f
|
||||||
cgghrd.f cgglse.f cggqrf.f cggrqf.f
|
cgetri.f
|
||||||
DEPRECATED/cggsvd.f DEPRECATED/cggsvp.f
|
cggbak.f cggbal.f
|
||||||
|
cgges.f cgges3.f cggesx.f cggev.f cggev3.f cggevx.f
|
||||||
|
cggglm.f cgghrd.f cgghd3.f cgglse.f cggqrf.f cggrqf.f
|
||||||
|
cggsvd3.f cggsvp3.f
|
||||||
cgtcon.f cgtrfs.f cgtsv.f cgtsvx.f cgttrf.f cgttrs.f cgtts2.f chbev.f
|
cgtcon.f cgtrfs.f cgtsv.f cgtsvx.f cgttrf.f cgttrs.f cgtts2.f chbev.f
|
||||||
chbevd.f chbevx.f chbgst.f chbgv.f chbgvd.f chbgvx.f chbtrd.f
|
chbevd.f chbevx.f chbgst.f chbgv.f chbgvd.f chbgvx.f chbtrd.f
|
||||||
checon.f cheev.f cheevd.f cheevr.f cheevx.f chegs2.f chegst.f
|
checon.f cheev.f cheevd.f cheevr.f cheevx.f chegs2.f chegst.f
|
||||||
|
|
@ -144,7 +147,11 @@ set(CLASRC
|
||||||
chetf2.f chetrd.f
|
chetf2.f chetrd.f
|
||||||
chetrf.f chetri.f chetri2.f chetri2x.f cheswapr.f
|
chetrf.f chetri.f chetri2.f chetri2x.f cheswapr.f
|
||||||
chetrs.f chetrs2.f
|
chetrs.f chetrs2.f
|
||||||
chetf2_rook.f chetrf_rook.f chetri_rook.f chetrs_rook.f checon_rook.f chesv_rook.f
|
chetf2_rook.f chetrf_rook.f chetri_rook.f
|
||||||
|
chetrs_rook.f checon_rook.f chesv_rook.f
|
||||||
|
chetf2_rk.f chetrf_rk.f chetri_3.f chetri_3x.f
|
||||||
|
chetrs_3.f checon_3.f chesv_rk.f
|
||||||
|
chesv_aa.f chesv_aa_2stage.f chetrf_aa.f chetrf_aa_2stage.f chetrs_aa.f chetrs_aa_2stage.f
|
||||||
chgeqz.f chpcon.f chpev.f chpevd.f
|
chgeqz.f chpcon.f chpev.f chpevd.f
|
||||||
chpevx.f chpgst.f chpgv.f chpgvd.f chpgvx.f chprfs.f chpsv.f
|
chpevx.f chpgst.f chpgv.f chpgvd.f chpgvx.f chprfs.f chpsv.f
|
||||||
chpsvx.f
|
chpsvx.f
|
||||||
|
|
@ -152,38 +159,42 @@ set(CLASRC
|
||||||
clacgv.f clacon.f clacn2.f clacp2.f clacpy.f clacrm.f clacrt.f cladiv.f
|
clacgv.f clacon.f clacn2.f clacp2.f clacpy.f clacrm.f clacrt.f cladiv.f
|
||||||
claed0.f claed7.f claed8.f
|
claed0.f claed7.f claed8.f
|
||||||
claein.f claesy.f claev2.f clags2.f clagtm.f
|
claein.f claesy.f claev2.f clags2.f clagtm.f
|
||||||
clahef.f clahef_rook.f clahqr.f
|
clahef.f clahef_rook.f clahef_rk.f clahef_aa.f clahqr.f
|
||||||
DEPRECATED/clahrd.f clahr2.f claic1.f clals0.f clalsa.f clalsd.f clangb.f clange.f clangt.f
|
clahr2.f claic1.f clals0.f clalsa.f clalsd.f clangb.f clange.f clangt.f
|
||||||
clanhb.f clanhe.f
|
clanhb.f clanhe.f
|
||||||
clanhp.f clanhs.f clanht.f clansb.f clansp.f clansy.f clantb.f
|
clanhp.f clanhs.f clanht.f clansb.f clansp.f clansy.f clantb.f
|
||||||
clantp.f clantr.f clapll.f clapmt.f clarcm.f claqgb.f claqge.f
|
clantp.f clantr.f clapll.f clapmt.f clarcm.f claqgb.f claqge.f
|
||||||
claqhb.f claqhe.f claqhp.f claqp2.f claqps.f claqsb.f
|
claqhb.f claqhe.f claqhp.f claqp2.f claqps.f claqsb.f
|
||||||
claqr0.f claqr1.f claqr2.f claqr3.f claqr4.f claqr5.f
|
claqr0.f claqr1.f claqr2.f claqr3.f claqr4.f claqr5.f
|
||||||
claqsp.f claqsy.f clar1v.f clar2v.f ilaclr.f ilaclc.f
|
claqsp.f claqsy.f clar1v.f clar2v.f ilaclr.f ilaclc.f
|
||||||
clarf.f clarfb.f clarfg.f clarft.f clarfgp.f
|
clarf.f clarfb.f clarfg.f clarfgp.f clarft.f
|
||||||
clarfx.f clargv.f clarnv.f clarrv.f clartg.f clartv.f
|
clarfx.f clarfy.f clargv.f clarnv.f clarrv.f clartg.f clartv.f
|
||||||
clarz.f clarzb.f clarzt.f clascl.f claset.f clasr.f classq.f
|
clarz.f clarzb.f clarzt.f clascl.f claset.f clasr.f classq.f
|
||||||
clasyf.f clasyf_rook.f clatbs.f clatdf.f clatps.f clatrd.f clatrs.f clatrz.f
|
clasyf.f clasyf_rook.f clasyf_rk.f clasyf_aa.f
|
||||||
DEPRECATED/clatzm.f cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f
|
clatbs.f clatdf.f clatps.f clatrd.f clatrs.f clatrz.f
|
||||||
|
cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f
|
||||||
cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpocon.f cpoequ.f cporfs.f
|
cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpocon.f cpoequ.f cporfs.f
|
||||||
cposv.f cposvx.f cpstrf.f cpstf2.f
|
cposv.f cposvx.f cpotrf2.f cpotri.f cpstrf.f cpstf2.f
|
||||||
cppcon.f cppequ.f cpprfs.f cppsv.f cppsvx.f cpptrf.f cpptri.f cpptrs.f
|
cppcon.f cppequ.f cpprfs.f cppsv.f cppsvx.f cpptrf.f cpptri.f cpptrs.f
|
||||||
cptcon.f cpteqr.f cptrfs.f cptsv.f cptsvx.f cpttrf.f cpttrs.f cptts2.f
|
cptcon.f cpteqr.f cptrfs.f cptsv.f cptsvx.f cpttrf.f cpttrs.f cptts2.f
|
||||||
crot.f cspcon.f csprfs.f cspsv.f
|
crot.f cspcon.f csprfs.f cspsv.f
|
||||||
cspsvx.f csptrf.f csptri.f csptrs.f csrscl.f cstedc.f
|
cspsvx.f csptrf.f csptri.f csptrs.f csrscl.f cstedc.f
|
||||||
cstegr.f cstein.f csteqr.f
|
cstegr.f cstein.f csteqr.f csycon.f
|
||||||
csycon.f
|
csyrfs.f csysv.f csysvx.f csytf2.f csytrf.f csytri.f
|
||||||
csyrfs.f csysv.f csysvx.f csytf2.f csytrf.f csytri.f csytri2.f csytri2x.f
|
csytri2.f csytri2x.f csyswapr.f
|
||||||
csyswapr.f csytrs.f csytrs2.f csyconv.f
|
csytrs.f csytrs2.f
|
||||||
|
csyconv.f csyconvf.f csyconvf_rook.f
|
||||||
csytf2_rook.f csytrf_rook.f csytrs_rook.f
|
csytf2_rook.f csytrf_rook.f csytrs_rook.f
|
||||||
csytri_rook.f csycon_rook.f csysv_rook.f
|
csytri_rook.f csycon_rook.f csysv_rook.f
|
||||||
|
csytf2_rk.f csytrf_rk.f csytrf_aa.f csytrf_aa_2stage.f csytrs_3.f csytrs_aa.f csytrs_aa_2stage.f
|
||||||
|
csytri_3.f csytri_3x.f csycon_3.f csysv_rk.f csysv_aa.f csysv_aa_2stage.f
|
||||||
ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f
|
ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f
|
||||||
ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f
|
ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f
|
||||||
ctprfs.f ctptri.f
|
ctprfs.f ctptri.f
|
||||||
ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f
|
ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f
|
||||||
ctrsyl.f ctrtrs.f DEPRECATED/ctzrqf.f ctzrzf.f cung2l.f cung2r.f
|
ctrsyl.f ctrtrs.f ctzrzf.f cung2l.f cung2r.f
|
||||||
cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f
|
cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f
|
||||||
cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f
|
cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f cunm22.f
|
||||||
cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f
|
cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f
|
||||||
cunmtr.f cupgtr.f cupmtr.f icmax1.f scsum1.f cstemr.f
|
cunmtr.f cupgtr.f cupmtr.f icmax1.f scsum1.f cstemr.f
|
||||||
chfrk.f ctfttp.f clanhf.f cpftrf.f cpftri.f cpftrs.f ctfsm.f ctftri.f
|
chfrk.f ctfttp.f clanhf.f cpftrf.f cpftri.f cpftrs.f ctfsm.f ctftri.f
|
||||||
|
|
@ -192,45 +203,55 @@ set(CLASRC
|
||||||
cbbcsd.f clapmr.f cunbdb.f cunbdb1.f cunbdb2.f cunbdb3.f cunbdb4.f
|
cbbcsd.f clapmr.f cunbdb.f cunbdb1.f cunbdb2.f cunbdb3.f cunbdb4.f
|
||||||
cunbdb5.f cunbdb6.f cuncsd.f cuncsd2by1.f
|
cunbdb5.f cunbdb6.f cuncsd.f cuncsd2by1.f
|
||||||
cgeqrt.f cgeqrt2.f cgeqrt3.f cgemqrt.f
|
cgeqrt.f cgeqrt2.f cgeqrt3.f cgemqrt.f
|
||||||
ctpqrt.f ctpqrt2.f ctpmqrt.f ctprfb.f cpotri.f
|
ctpqrt.f ctpqrt2.f ctpmqrt.f ctprfb.f
|
||||||
cgelq.f cgelqt.f cgelqt3.f cgemlq.f cgemlqt.f cgemqr.f cgeqr.f cgetsls.f
|
cgelqt.f cgelqt3.f cgemlqt.f
|
||||||
clamswlq.f clamtsqr.f claswlq.f clatsqr.f ctplqt.f ctplqt2.f ctpmlqt.f
|
cgetsls.f cgeqr.f clatsqr.f clamtsqr.f cgemqr.f
|
||||||
chesv_aa.f chetrf_aa.f chetrs_aa.f clahef_aa.f csytf2_rk.f clasyf_rk.f
|
cgelq.f claswlq.f clamswlq.f cgemlq.f
|
||||||
csytrf_rk.f csytrs_3.f csycon_3.f csytri_3.f csytri_3x.f csysv_rk.f
|
ctplqt.f ctplqt2.f ctpmlqt.f
|
||||||
chetf2_rk.f clahef_rk.f chetrf_rk.f chetrs_3.f checon_3.f chetri_3.f
|
chetrd_2stage.f chetrd_he2hb.f chetrd_hb2st.F chb2st_kernels.f
|
||||||
chetri_3x.f chesv_rk.f chb2st_kernels.f chbev_2stage.f chbevd_2stage.f
|
cheevd_2stage.f cheev_2stage.f cheevx_2stage.f cheevr_2stage.f
|
||||||
chbevx_2stage.f cheev_2stage.f cheevd_2stage.f cheevr_2stage.f cheevx_2stage.f
|
chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f)
|
||||||
chegv_2stage.f chetrd_2stage.f chetrd_hb2st.F chetrd_he2hb.f clarfy.f
|
|
||||||
)
|
|
||||||
|
|
||||||
set(ZCLASRC cpotrs.f)
|
set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f
|
||||||
|
cla_gercond_c.f cla_gercond_x.f cla_gerpvgrw.f
|
||||||
|
csysvxx.f csyrfsx.f cla_syrfsx_extended.f cla_syamv.f
|
||||||
|
cla_syrcond_c.f cla_syrcond_x.f cla_syrpvgrw.f
|
||||||
|
cposvxx.f cporfsx.f cla_porfsx_extended.f
|
||||||
|
cla_porcond_c.f cla_porcond_x.f cla_porpvgrw.f
|
||||||
|
cgbsvxx.f cgbrfsx.f cla_gbrfsx_extended.f cla_gbamv.f
|
||||||
|
cla_gbrcond_c.f cla_gbrcond_x.f cla_gbrpvgrw.f
|
||||||
|
chesvxx.f cherfsx.f cla_herfsx_extended.f cla_heamv.f
|
||||||
|
cla_hercond_c.f cla_hercond_x.f cla_herpvgrw.f
|
||||||
|
cla_lin_berr.f clarscl2.f clascl2.f cla_wwaddw.f)
|
||||||
|
|
||||||
set(DLASRC
|
set(DLASRC
|
||||||
dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f
|
dbdsvdx.f dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f
|
||||||
dgbsvx.f dgbtf2.f dgbtrf.f dgbtrs.f dgebak.f dgebal.f dgebd2.f
|
dgbsvx.f dgbtf2.f dgbtrf.f dgbtrs.f dgebak.f dgebal.f dgebd2.f
|
||||||
dgebrd.f dgecon.f dgeequ.f dgees.f dgeesx.f dgeev.f dgeevx.f
|
dgebrd.f dgecon.f dgeequ.f dgees.f dgeesx.f dgeev.f dgeevx.f
|
||||||
DEPRECATED/dgegs.f DEPRECATED/dgegv.f dgehd2.f dgehrd.f dgelq2.f dgelqf.f
|
dgehd2.f dgehrd.f dgelq2.f dgelqf.f
|
||||||
dgels.f dgelsd.f dgelss.f DEPRECATED/dgelsx.f dgelsy.f dgeql2.f dgeqlf.f
|
dgels.f dgelsd.f dgelss.f dgelsy.f dgeql2.f dgeqlf.f
|
||||||
dgeqp3.f DEPRECATED/dgeqpf.f dgeqr2.f dgeqr2p.f dgeqrf.f dgeqrfp.f dgerfs.f
|
dgeqp3.f dgeqr2.f dgeqr2p.f dgeqrf.f dgeqrfp.f dgerfs.f dgerq2.f dgerqf.f
|
||||||
dgerq2.f dgerqf.f dgesc2.f dgesdd.f dgesvd.f dgesvdx.f dgesvx.f
|
dgesc2.f dgesdd.f dgesvd.f dgesvdx.f dgesvx.f dgetc2.f
|
||||||
dgetc2.f dgetri.f dgetrf2.f
|
dgetrf2.f dgetri.f
|
||||||
dggbak.f dggbal.f dgges.f dgges3.f dggesx.f dggev.f dggev3.f dggevx.f
|
dggbak.f dggbal.f
|
||||||
dggglm.f dgghd3.f dgghrd.f dgglse.f dggqrf.f
|
dgges.f dgges3.f dggesx.f dggev.f dggev3.f dggevx.f
|
||||||
dggrqf.f dggsvd3.f dggsvp3.f DEPRECATED/dggsvd.f DEPRECATED/dggsvp.f dgtcon.f dgtrfs.f dgtsv.f
|
dggglm.f dgghrd.f dgghd3.f dgglse.f dggqrf.f
|
||||||
|
dggrqf.f dggsvd3.f dggsvp3.f dgtcon.f dgtrfs.f dgtsv.f
|
||||||
dgtsvx.f dgttrf.f dgttrs.f dgtts2.f dhgeqz.f
|
dgtsvx.f dgttrf.f dgttrs.f dgtts2.f dhgeqz.f
|
||||||
dhsein.f dhseqr.f dlabrd.f dlacon.f dlacn2.f
|
dhsein.f dhseqr.f dlabrd.f dlacon.f dlacn2.f
|
||||||
dlaein.f dlaexc.f dlag2.f dlags2.f dlagtm.f dlagv2.f dlahqr.f
|
dlaein.f dlaexc.f dlag2.f dlags2.f dlagtm.f dlagv2.f dlahqr.f
|
||||||
DEPRECATED/dlahrd.f dlahr2.f dlaic1.f dlaln2.f dlals0.f dlalsa.f dlalsd.f
|
dlahr2.f dlaic1.f dlaln2.f dlals0.f dlalsa.f dlalsd.f
|
||||||
dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansp.f
|
dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansp.f
|
||||||
dlansy.f dlantb.f dlantp.f dlantr.f dlanv2.f
|
dlansy.f dlantb.f dlantp.f dlantr.f dlanv2.f
|
||||||
dlapll.f dlapmt.f
|
dlapll.f dlapmt.f
|
||||||
dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqsb.f dlaqsp.f dlaqsy.f
|
dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqsb.f dlaqsp.f dlaqsy.f
|
||||||
dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f
|
dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f
|
||||||
dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f
|
dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f
|
||||||
dlarf.f dlarfb.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f
|
dlarf.f dlarfb.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f dlarfy.f
|
||||||
dlargv.f dlarrv.f dlartv.f
|
dlargv.f dlarrv.f dlartv.f
|
||||||
dlarz.f dlarzb.f dlarzt.f dlasy2.f dlasyf.f dlasyf_rook.f
|
dlarz.f dlarzb.f dlarzt.f dlasy2.f
|
||||||
dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f DEPRECATED/dlatzm.f
|
dlasyf.f dlasyf_rook.f dlasyf_rk.f dlasyf_aa.f
|
||||||
|
dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f
|
||||||
dopgtr.f dopmtr.f dorg2l.f dorg2r.f
|
dopgtr.f dopmtr.f dorg2l.f dorg2r.f
|
||||||
dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f
|
dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f
|
||||||
dorgrq.f dorgtr.f dorm2l.f dorm2r.f dorm22.f
|
dorgrq.f dorgtr.f dorm2l.f dorm2r.f dorm22.f
|
||||||
|
|
@ -238,7 +259,7 @@ set(DLASRC
|
||||||
dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f
|
dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f
|
||||||
dpbstf.f dpbsv.f dpbsvx.f
|
dpbstf.f dpbsv.f dpbsvx.f
|
||||||
dpbtf2.f dpbtrf.f dpbtrs.f dpocon.f dpoequ.f dporfs.f dposv.f
|
dpbtf2.f dpbtrf.f dpbtrs.f dpocon.f dpoequ.f dporfs.f dposv.f
|
||||||
dposvx.f dpotrf2.f dpotrs.f dpstrf.f dpstf2.f
|
dposvx.f dpotrf2.f dpotri.f dpotrs.f dpstrf.f dpstf2.f
|
||||||
dppcon.f dppequ.f
|
dppcon.f dppequ.f
|
||||||
dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dptcon.f
|
dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dptcon.f
|
||||||
dpteqr.f dptrfs.f dptsv.f dptsvx.f dpttrs.f dptts2.f drscl.f
|
dpteqr.f dptrfs.f dptsv.f dptsvx.f dpttrs.f dptts2.f drscl.f
|
||||||
|
|
@ -246,19 +267,23 @@ set(DLASRC
|
||||||
dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f
|
dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f
|
||||||
dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f
|
dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f
|
||||||
dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f
|
dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f
|
||||||
dstevx.f
|
dstevx.f dsycon.f dsyev.f dsyevd.f dsyevr.f
|
||||||
dsycon.f dsyev.f dsyevd.f dsyevr.f
|
|
||||||
dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f
|
dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f
|
||||||
dsysv.f dsysvx.f
|
dsysv.f dsysvx.f
|
||||||
dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytri2.f dsytri2x.f
|
dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytrs.f dsytrs2.f
|
||||||
dsyswapr.f dsytrs.f dsytrs2.f dsyconv.f
|
dsytri2.f dsytri2x.f dsyswapr.f
|
||||||
|
dsyconv.f dsyconvf.f dsyconvf_rook.f
|
||||||
dsytf2_rook.f dsytrf_rook.f dsytrs_rook.f
|
dsytf2_rook.f dsytrf_rook.f dsytrs_rook.f
|
||||||
dsytri_rook.f dsycon_rook.f dsysv_rook.f
|
dsytri_rook.f dsycon_rook.f dsysv_rook.f
|
||||||
dtbcon.f dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f
|
dsytf2_rk.f dsytrf_rk.f dsytrs_3.f
|
||||||
|
dsytri_3.f dsytri_3x.f dsycon_3.f dsysv_rk.f
|
||||||
|
dsysv_aa.f dsysv_aa_2stage.f dsytrf_aa.f dsytrf_aa_2stage.f dsytrs_aa.f dsytrs_aa_2stage.f
|
||||||
|
dtbcon.f
|
||||||
|
dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f
|
||||||
dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f
|
dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f
|
||||||
dtptrs.f
|
dtptrs.f
|
||||||
dtrcon.f dtrevc.f dtrevc3.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f
|
dtrcon.f dtrevc.f dtrevc3.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f
|
||||||
dtrtrs.f DEPRECATED/dtzrqf.f dtzrzf.f dstemr.f
|
dtrtrs.f dtzrzf.f dstemr.f
|
||||||
dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f
|
dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f
|
||||||
dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f
|
dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f
|
||||||
dtfttr.f dtpttf.f dtpttr.f dtrttf.f dtrttp.f
|
dtfttr.f dtpttf.f dtpttr.f dtrttf.f dtrttp.f
|
||||||
|
|
@ -267,29 +292,38 @@ set(DLASRC
|
||||||
dbbcsd.f dlapmr.f dorbdb.f dorbdb1.f dorbdb2.f dorbdb3.f dorbdb4.f
|
dbbcsd.f dlapmr.f dorbdb.f dorbdb1.f dorbdb2.f dorbdb3.f dorbdb4.f
|
||||||
dorbdb5.f dorbdb6.f dorcsd.f dorcsd2by1.f
|
dorbdb5.f dorbdb6.f dorcsd.f dorcsd2by1.f
|
||||||
dgeqrt.f dgeqrt2.f dgeqrt3.f dgemqrt.f
|
dgeqrt.f dgeqrt2.f dgeqrt3.f dgemqrt.f
|
||||||
dtpqrt.f dtpqrt2.f dtpmqrt.f dtprfb.f dpotri.f
|
dtpqrt.f dtpqrt2.f dtpmqrt.f dtprfb.f
|
||||||
dgelq.f dgelqt.f dgelqt3.f dgemlq.f dgemlqt.f dgemqr.f dgeqr.f dgetsls.f
|
dgelqt.f dgelqt3.f dgemlqt.f
|
||||||
dlamswlq.f dlamtsqr.f dlaswlq.f dlatsqr.f dtplqt.f dtplqt2.f dtpmlqt.f
|
dgetsls.f dgeqr.f dlatsqr.f dlamtsqr.f dgemqr.f
|
||||||
dsysv_aa.f dsytrf_aa.f dsytrs_aa.f dlasyf_aa.f dsytf2_rk.f dlasyf_rk.f
|
dgelq.f dlaswlq.f dlamswlq.f dgemlq.f
|
||||||
dsytrf_rk.f dsytrs_3.f dsycon_3.f dsytri_3.f dsytri_3x.f dsysv_rk.f
|
dtplqt.f dtplqt2.f dtpmlqt.f
|
||||||
dsb2st_kernels.f dsbev_2stage.f dsbevd_2stage.f dsbevx_2stage.f
|
dsytrd_2stage.f dsytrd_sy2sb.f dsytrd_sb2st.F dsb2st_kernels.f
|
||||||
dsyev_2stage.f dsyevd_2stage.f dsyevr_2stage.f dsyevx_2stage.f
|
dsyevd_2stage.f dsyev_2stage.f dsyevx_2stage.f dsyevr_2stage.f
|
||||||
dsygv_2stage.f dsytrd_2stage.f dsytrd_sb2st.F dsytrd_sy2sb.f dlarfy.f
|
dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f)
|
||||||
)
|
|
||||||
|
set(DXLASRC dgesvxx.f dgerfsx.f dla_gerfsx_extended.f dla_geamv.f
|
||||||
|
dla_gercond.f dla_gerpvgrw.f dsysvxx.f dsyrfsx.f
|
||||||
|
dla_syrfsx_extended.f dla_syamv.f dla_syrcond.f dla_syrpvgrw.f
|
||||||
|
dposvxx.f dporfsx.f dla_porfsx_extended.f dla_porcond.f
|
||||||
|
dla_porpvgrw.f dgbsvxx.f dgbrfsx.f dla_gbrfsx_extended.f
|
||||||
|
dla_gbamv.f dla_gbrcond.f dla_gbrpvgrw.f dla_lin_berr.f dlarscl2.f
|
||||||
|
dlascl2.f dla_wwaddw.f)
|
||||||
|
|
||||||
set(ZLASRC
|
set(ZLASRC
|
||||||
zbdsqr.f zgbbrd.f zgbcon.f zgbequ.f zgbrfs.f zgbsv.f zgbsvx.f
|
zbdsqr.f zgbbrd.f zgbcon.f zgbequ.f zgbrfs.f zgbsv.f zgbsvx.f
|
||||||
zgbtf2.f zgbtrf.f zgbtrs.f zgebak.f zgebal.f zgebd2.f zgebrd.f
|
zgbtf2.f zgbtrf.f zgbtrs.f zgebak.f zgebal.f zgebd2.f zgebrd.f
|
||||||
zgecon.f zgeequ.f zgees.f zgeesx.f zgeev.f zgeevx.f
|
zgecon.f zgeequ.f zgees.f zgeesx.f zgeev.f zgeevx.f
|
||||||
DEPRECATED/zgegs.f DEPRECATED/zgegv.f zgehd2.f zgehrd.f zgejsv.f zgelq2.f zgelqf.f
|
zgehd2.f zgehrd.f zgelq2.f zgelqf.f
|
||||||
zgels.f zgelsd.f zgelss.f DEPRECATED/zgelsx.f zgelsy.f zgeql2.f zgeqlf.f zgeqp3.f
|
zgels.f zgelsd.f zgelss.f zgelsy.f zgeql2.f zgeqlf.f zgeqp3.f
|
||||||
DEPRECATED/zgeqpf.f zgeqr2.f zgeqr2p.f zgeqrf.f zgeqrfp.f zgerfs.f zgerq2.f zgerqf.f
|
zgeqr2.f zgeqr2p.f zgeqrf.f zgeqrfp.f zgerfs.f zgerq2.f zgerqf.f
|
||||||
zgesc2.f zgesdd.f zgesvd.f zgesvdx.f zgesvj.f zgesvx.f zgetc2.f
|
zgesc2.f zgesdd.f zgesvd.f zgesvdx.f zgesvx.f
|
||||||
zgetri.f zgetrf2.f
|
zgesvj.f zgejsv.f zgsvj0.f zgsvj1.f
|
||||||
zggbak.f zggbal.f zgges.f zgges3.f zggesx.f zggev.f zggev3.f zggevx.f zggglm.f
|
zgetc2.f zgetrf2.f
|
||||||
zgghd3.f zgghrd.f zgglse.f zggqrf.f zggrqf.f
|
zgetri.f
|
||||||
DEPRECATED/zggsvd.f zggsvd3.f DEPRECATED/zggsvp.f zggsvp3.f
|
zggbak.f zggbal.f
|
||||||
zgsvj0.f zgsvj1.f
|
zgges.f zgges3.f zggesx.f zggev.f zggev3.f zggevx.f
|
||||||
|
zggglm.f zgghrd.f zgghd3.f zgglse.f zggqrf.f zggrqf.f
|
||||||
|
zggsvd3.f zggsvp3.f
|
||||||
zgtcon.f zgtrfs.f zgtsv.f zgtsvx.f zgttrf.f zgttrs.f zgtts2.f zhbev.f
|
zgtcon.f zgtrfs.f zgtsv.f zgtsvx.f zgttrf.f zgttrs.f zgtts2.f zhbev.f
|
||||||
zhbevd.f zhbevx.f zhbgst.f zhbgv.f zhbgvd.f zhbgvx.f zhbtrd.f
|
zhbevd.f zhbevx.f zhbgst.f zhbgv.f zhbgvd.f zhbgvx.f zhbtrd.f
|
||||||
zhecon.f zheev.f zheevd.f zheevr.f zheevx.f zhegs2.f zhegst.f
|
zhecon.f zheev.f zheevd.f zheevr.f zheevx.f zhegs2.f zhegst.f
|
||||||
|
|
@ -297,7 +331,11 @@ set(ZLASRC
|
||||||
zhetf2.f zhetrd.f
|
zhetf2.f zhetrd.f
|
||||||
zhetrf.f zhetri.f zhetri2.f zhetri2x.f zheswapr.f
|
zhetrf.f zhetri.f zhetri2.f zhetri2x.f zheswapr.f
|
||||||
zhetrs.f zhetrs2.f
|
zhetrs.f zhetrs2.f
|
||||||
zhetf2_rook.f zhetrf_rook.f zhetri_rook.f zhetrs_rook.f zhecon_rook.f zhesv_rook.f
|
zhetf2_rook.f zhetrf_rook.f zhetri_rook.f
|
||||||
|
zhetrs_rook.f zhecon_rook.f zhesv_rook.f
|
||||||
|
zhetf2_rk.f zhetrf_rk.f zhetri_3.f zhetri_3x.f
|
||||||
|
zhetrs_3.f zhecon_3.f zhesv_rk.f
|
||||||
|
zhesv_aa.f zhesv_aa_2stage.f zhetrf_aa.f zhetrf_aa_2stage.f zhetrs_aa.f zhetrs_aa_2stage.f
|
||||||
zhgeqz.f zhpcon.f zhpev.f zhpevd.f
|
zhgeqz.f zhpcon.f zhpev.f zhpevd.f
|
||||||
zhpevx.f zhpgst.f zhpgv.f zhpgvd.f zhpgvx.f zhprfs.f zhpsv.f
|
zhpevx.f zhpgst.f zhpgv.f zhpgvd.f zhpgvx.f zhprfs.f zhpsv.f
|
||||||
zhpsvx.f
|
zhpsvx.f
|
||||||
|
|
@ -305,8 +343,8 @@ set(ZLASRC
|
||||||
zlacgv.f zlacon.f zlacn2.f zlacp2.f zlacpy.f zlacrm.f zlacrt.f zladiv.f
|
zlacgv.f zlacon.f zlacn2.f zlacp2.f zlacpy.f zlacrm.f zlacrt.f zladiv.f
|
||||||
zlaed0.f zlaed7.f zlaed8.f
|
zlaed0.f zlaed7.f zlaed8.f
|
||||||
zlaein.f zlaesy.f zlaev2.f zlags2.f zlagtm.f
|
zlaein.f zlaesy.f zlaev2.f zlags2.f zlagtm.f
|
||||||
zlahef.f zlahef_rook.f zlahqr.f
|
zlahef.f zlahef_rook.f zlahef_rk.f zlahef_aa.f zlahqr.f
|
||||||
DEPRECATED/zlahrd.f zlahr2.f zlaic1.f zlals0.f zlalsa.f zlalsd.f zlangb.f zlange.f
|
zlahr2.f zlaic1.f zlals0.f zlalsa.f zlalsd.f zlangb.f zlange.f
|
||||||
zlangt.f zlanhb.f
|
zlangt.f zlanhb.f
|
||||||
zlanhe.f
|
zlanhe.f
|
||||||
zlanhp.f zlanhs.f zlanht.f zlansb.f zlansp.f zlansy.f zlantb.f
|
zlanhp.f zlanhs.f zlanht.f zlansb.f zlansp.f zlansy.f zlantb.f
|
||||||
|
|
@ -315,31 +353,34 @@ set(ZLASRC
|
||||||
zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f
|
zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f
|
||||||
zlaqsp.f zlaqsy.f zlar1v.f zlar2v.f ilazlr.f ilazlc.f
|
zlaqsp.f zlaqsy.f zlar1v.f zlar2v.f ilazlr.f ilazlc.f
|
||||||
zlarcm.f zlarf.f zlarfb.f
|
zlarcm.f zlarf.f zlarfb.f
|
||||||
zlarfg.f zlarft.f zlarfgp.f
|
zlarfg.f zlarfgp.f zlarft.f
|
||||||
zlarfx.f zlargv.f zlarnv.f zlarrv.f zlartg.f zlartv.f
|
zlarfx.f zlarfy.f zlargv.f zlarnv.f zlarrv.f zlartg.f zlartv.f
|
||||||
zlarz.f zlarzb.f zlarzt.f zlascl.f zlaset.f zlasr.f
|
zlarz.f zlarzb.f zlarzt.f zlascl.f zlaset.f zlasr.f
|
||||||
zlassq.f zlasyf.f zlasyf_rook.f zlasyf_aa.f
|
zlassq.f zlasyf.f zlasyf_rook.f zlasyf_rk.f zlasyf_aa.f
|
||||||
zlatbs.f zlatdf.f zlatps.f zlatrd.f zlatrs.f zlatrz.f DEPRECATED/zlatzm.f
|
zlatbs.f zlatdf.f zlatps.f zlatrd.f zlatrs.f zlatrz.f
|
||||||
zpbcon.f zpbequ.f zpbrfs.f zpbstf.f zpbsv.f
|
zpbcon.f zpbequ.f zpbrfs.f zpbstf.f zpbsv.f
|
||||||
zpbsvx.f zpbtf2.f zpbtrf.f zpbtrs.f zpocon.f zpoequ.f zporfs.f
|
zpbsvx.f zpbtf2.f zpbtrf.f zpbtrs.f zpocon.f zpoequ.f zporfs.f
|
||||||
zposv.f zposvx.f zpotrf2.f zpotrs.f zpstrf.f zpstf2.f
|
zposv.f zposvx.f zpotrf2.f zpotri.f zpotrs.f zpstrf.f zpstf2.f
|
||||||
zppcon.f zppequ.f zpprfs.f zppsv.f zppsvx.f zpptrf.f zpptri.f zpptrs.f
|
zppcon.f zppequ.f zpprfs.f zppsv.f zppsvx.f zpptrf.f zpptri.f zpptrs.f
|
||||||
zptcon.f zpteqr.f zptrfs.f zptsv.f zptsvx.f zpttrf.f zpttrs.f zptts2.f
|
zptcon.f zpteqr.f zptrfs.f zptsv.f zptsvx.f zpttrf.f zpttrs.f zptts2.f
|
||||||
zrot.f zspcon.f zsprfs.f zspsv.f
|
zrot.f zspcon.f zsprfs.f zspsv.f
|
||||||
zspsvx.f zsptrf.f zsptri.f zsptrs.f zdrscl.f zstedc.f
|
zspsvx.f zsptrf.f zsptri.f zsptrs.f zdrscl.f zstedc.f
|
||||||
zstegr.f zstein.f zsteqr.f
|
zstegr.f zstein.f zsteqr.f zsycon.f
|
||||||
zsycon.f zsysv_aa.f
|
zsyrfs.f zsysv.f zsysvx.f zsytf2.f zsytrf.f zsytri.f
|
||||||
zsyrfs.f zsysv.f zsysvx.f zsytf2.f zsytrf.f zsytri.f zsytri2.f zsytri2x.f
|
zsytri2.f zsytri2x.f zsyswapr.f
|
||||||
zsyswapr.f zsytrs.f zsytrs_aa.f zsytrs2.f zsyconv.f
|
zsytrs.f zsytrs2.f
|
||||||
zsytf2_rook.f zsytrf_rook.f zsytrs_rook.f
|
zsyconv.f zsyconvf.f zsyconvf_rook.f
|
||||||
|
zsytf2_rook.f zsytrf_rook.f zsytrs_rook.f zsytrs_aa.f zsytrs_aa_2stage.f
|
||||||
zsytri_rook.f zsycon_rook.f zsysv_rook.f
|
zsytri_rook.f zsycon_rook.f zsysv_rook.f
|
||||||
|
zsytf2_rk.f zsytrf_rk.f zsytrf_aa.f zsytrf_aa_2stage.f zsytrs_3.f
|
||||||
|
zsytri_3.f zsytri_3x.f zsycon_3.f zsysv_rk.f zsysv_aa.f zsysv_aa_2stage.f
|
||||||
ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f
|
ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f
|
||||||
ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f
|
ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f
|
||||||
ztprfs.f ztptri.f
|
ztprfs.f ztptri.f
|
||||||
ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f
|
ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f
|
||||||
ztrsyl.f ztrtrs.f DEPRECATED/ztzrqf.f ztzrzf.f zung2l.f
|
ztrsyl.f ztrtrs.f ztzrzf.f zung2l.f
|
||||||
zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f
|
zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f
|
||||||
zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunm22.f zunml2.f
|
zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunm22.f
|
||||||
zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f
|
zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f
|
||||||
zunmtr.f zupgtr.f
|
zunmtr.f zupgtr.f
|
||||||
zupmtr.f izmax1.f dzsum1.f zstemr.f
|
zupmtr.f izmax1.f dzsum1.f zstemr.f
|
||||||
|
|
@ -350,38 +391,95 @@ set(ZLASRC
|
||||||
zbbcsd.f zlapmr.f zunbdb.f zunbdb1.f zunbdb2.f zunbdb3.f zunbdb4.f
|
zbbcsd.f zlapmr.f zunbdb.f zunbdb1.f zunbdb2.f zunbdb3.f zunbdb4.f
|
||||||
zunbdb5.f zunbdb6.f zuncsd.f zuncsd2by1.f
|
zunbdb5.f zunbdb6.f zuncsd.f zuncsd2by1.f
|
||||||
zgeqrt.f zgeqrt2.f zgeqrt3.f zgemqrt.f
|
zgeqrt.f zgeqrt2.f zgeqrt3.f zgemqrt.f
|
||||||
ztpqrt.f ztpqrt2.f ztpmqrt.f ztprfb.f zpotri.f
|
ztpqrt.f ztpqrt2.f ztpmqrt.f ztprfb.f
|
||||||
zgelq.f zgelqt.f zgelqt3.f zgemlq.f zgemlqt.f zgemqr.f zgeqr.f zgetsls.f
|
ztplqt.f ztplqt2.f ztpmlqt.f
|
||||||
zlamswlq.f zlamtsqr.f zlaswlq.f zlatsqr.f ztplqt.f ztplqt2.f ztpmlqt.f
|
zgelqt.f zgelqt3.f zgemlqt.f
|
||||||
zhesv_aa.f zhetrf_aa.f zhetrs_aa.f zlahef_aa.f zsytf2_rk.f zlasyf_rk.f
|
zgetsls.f zgeqr.f zlatsqr.f zlamtsqr.f zgemqr.f
|
||||||
zsytrf_aa.f zsytrf_rk.f zsytrs_3.f zsycon_3.f zsytri_3.f zsytri_3x.f zsysv_rk.f
|
zgelq.f zlaswlq.f zlamswlq.f zgemlq.f
|
||||||
zhetf2_rk.f zlahef_rk.f zhetrf_rk.f zhetrs_3.f zhecon_3.f zhetri_3.f
|
zhetrd_2stage.f zhetrd_he2hb.f zhetrd_hb2st.F zhb2st_kernels.f
|
||||||
zhetri_3x.f zhesv_rk.f zhb2st_kernels.f zhbev_2stage.f zhbevd_2stage.f
|
zheevd_2stage.f zheev_2stage.f zheevx_2stage.f zheevr_2stage.f
|
||||||
zhbevx_2stage.f zheev_2stage.f zheevd_2stage.f zheevr_2stage.f
|
zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f)
|
||||||
zheevx_2stage.f zhegv_2stage.f zhetrd_2stage.f zhetrd_hb2st.F zhetrd_he2hb.f
|
|
||||||
zlarfy.f
|
|
||||||
)
|
|
||||||
|
|
||||||
set(LA_REL_SRC ${ALLAUX})
|
set(ZXLASRC zgesvxx.f zgerfsx.f zla_gerfsx_extended.f zla_geamv.f
|
||||||
if (BUILD_SINGLE)
|
zla_gercond_c.f zla_gercond_x.f zla_gerpvgrw.f zsysvxx.f zsyrfsx.f
|
||||||
list(APPEND LA_REL_SRC ${SLASRC} ${DSLASRC} ${SCLAUX})
|
zla_syrfsx_extended.f zla_syamv.f zla_syrcond_c.f zla_syrcond_x.f
|
||||||
endif ()
|
zla_syrpvgrw.f zposvxx.f zporfsx.f zla_porfsx_extended.f
|
||||||
|
zla_porcond_c.f zla_porcond_x.f zla_porpvgrw.f zgbsvxx.f zgbrfsx.f
|
||||||
|
zla_gbrfsx_extended.f zla_gbamv.f zla_gbrcond_c.f zla_gbrcond_x.f
|
||||||
|
zla_gbrpvgrw.f zhesvxx.f zherfsx.f zla_herfsx_extended.f
|
||||||
|
zla_heamv.f zla_hercond_c.f zla_hercond_x.f zla_herpvgrw.f
|
||||||
|
zla_lin_berr.f zlarscl2.f zlascl2.f zla_wwaddw.f)
|
||||||
|
|
||||||
if (BUILD_DOUBLE)
|
|
||||||
list(APPEND LA_REL_SRC ${DLASRC} ${DSLASRC} ${DZLAUX})
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (BUILD_COMPLEX)
|
if(USE_XBLAS)
|
||||||
list(APPEND LA_REL_SRC ${CLASRC} ${ZCLASRC} ${SCLAUX})
|
set(ALLXOBJ ${SXLASRC} ${DXLASRC} ${CXLASRC} ${ZXLASRC})
|
||||||
endif ()
|
endif()
|
||||||
|
|
||||||
if (BUILD_COMPLEX16)
|
list(APPEND SLASRC DEPRECATED/sgegs.f DEPRECATED/sgegv.f
|
||||||
list(APPEND LA_REL_SRC ${ZLASRC} ${ZCLASRC} ${DZLAUX})
|
DEPRECATED/sgeqpf.f DEPRECATED/sgelsx.f DEPRECATED/sggsvd.f
|
||||||
endif ()
|
DEPRECATED/sggsvp.f DEPRECATED/slahrd.f DEPRECATED/slatzm.f DEPRECATED/stzrqf.f)
|
||||||
|
list(APPEND DLASRC DEPRECATED/dgegs.f DEPRECATED/dgegv.f
|
||||||
|
DEPRECATED/dgeqpf.f DEPRECATED/dgelsx.f DEPRECATED/dggsvd.f
|
||||||
|
DEPRECATED/dggsvp.f DEPRECATED/dlahrd.f DEPRECATED/dlatzm.f DEPRECATED/dtzrqf.f)
|
||||||
|
list(APPEND CLASRC DEPRECATED/cgegs.f DEPRECATED/cgegv.f
|
||||||
|
DEPRECATED/cgeqpf.f DEPRECATED/cgelsx.f DEPRECATED/cggsvd.f
|
||||||
|
DEPRECATED/cggsvp.f DEPRECATED/clahrd.f DEPRECATED/clatzm.f DEPRECATED/ctzrqf.f)
|
||||||
|
list(APPEND ZLASRC DEPRECATED/zgegs.f DEPRECATED/zgegv.f
|
||||||
|
DEPRECATED/zgeqpf.f DEPRECATED/zgelsx.f DEPRECATED/zggsvd.f
|
||||||
|
DEPRECATED/zggsvp.f DEPRECATED/zlahrd.f DEPRECATED/zlatzm.f DEPRECATED/ztzrqf.f)
|
||||||
|
message(STATUS "Building deprecated routines")
|
||||||
|
|
||||||
|
set(DSLASRC spotrs.f)
|
||||||
|
|
||||||
|
set(ZCLASRC cpotrs.f)
|
||||||
|
|
||||||
|
set(SCATGEN slatm1.f slaran.f slarnd.f)
|
||||||
|
|
||||||
|
set(SMATGEN slatms.f slatme.f slatmr.f slatmt.f
|
||||||
|
slagge.f slagsy.f slakf2.f slarge.f slaror.f slarot.f slatm2.f
|
||||||
|
slatm3.f slatm5.f slatm6.f slatm7.f slahilb.f)
|
||||||
|
|
||||||
|
set(CMATGEN clatms.f clatme.f clatmr.f clatmt.f
|
||||||
|
clagge.f claghe.f clagsy.f clakf2.f clarge.f claror.f clarot.f
|
||||||
|
clatm1.f clarnd.f clatm2.f clatm3.f clatm5.f clatm6.f clahilb.f slatm7.f)
|
||||||
|
|
||||||
|
set(DZATGEN dlatm1.f dlaran.f dlarnd.f)
|
||||||
|
|
||||||
|
set(DMATGEN dlatms.f dlatme.f dlatmr.f dlatmt.f
|
||||||
|
dlagge.f dlagsy.f dlakf2.f dlarge.f dlaror.f dlarot.f dlatm2.f
|
||||||
|
dlatm3.f dlatm5.f dlatm6.f dlatm7.f dlahilb.f)
|
||||||
|
|
||||||
|
set(ZMATGEN zlatms.f zlatme.f zlatmr.f zlatmt.f
|
||||||
|
zlagge.f zlaghe.f zlagsy.f zlakf2.f zlarge.f zlaror.f zlarot.f
|
||||||
|
zlatm1.f zlarnd.f zlatm2.f zlatm3.f zlatm5.f zlatm6.f zlahilb.f dlatm7.f)
|
||||||
|
|
||||||
|
if(BUILD_SINGLE)
|
||||||
|
set(LA_REL_SRC ${SLASRC} ${DSLASRC} ${ALLAUX} ${SCLAUX})
|
||||||
|
set(LA_GEN_SRC ${SMATGEN} ${SCATGEN})
|
||||||
|
message(STATUS "Building Single Precision")
|
||||||
|
endif()
|
||||||
|
if(BUILD_DOUBLE)
|
||||||
|
set(LA_REL_SRC ${LA_REL_SRC} ${DLASRC} ${DSLASRC} ${ALLAUX} ${DZLAUX})
|
||||||
|
set(LA_GEN_SRC ${LA_GEN_SRC} ${DMATGEN} ${DZATGEN})
|
||||||
|
message(STATUS "Building Double Precision")
|
||||||
|
endif()
|
||||||
|
if(BUILD_COMPLEX)
|
||||||
|
set(LA_REL_SRC ${LA_REL_SRC} ${CLASRC} ${ZCLASRC} ${ALLAUX} ${SCLAUX})
|
||||||
|
SET(LA_GEN_SRC ${LA_GEN_SRC} ${CMATGEN} ${SCATGEN})
|
||||||
|
message(STATUS "Building Complex Precision")
|
||||||
|
endif()
|
||||||
|
if(BUILD_COMPLEX16)
|
||||||
|
set(LA_REL_SRC ${LA_REL_SRC} ${ZLASRC} ${ZCLASRC} ${ALLAUX} ${DZLAUX})
|
||||||
|
SET(LA_GEN_SRC ${LA_GEN_SRC} ${ZMATGEN} ${DZATGEN})
|
||||||
|
message(STATUS "Building Double Complex Precision")
|
||||||
|
endif()
|
||||||
|
|
||||||
# add lapack-netlib folder to the sources
|
# add lapack-netlib folder to the sources
|
||||||
set(LA_SOURCES "")
|
set(LA_SOURCES "")
|
||||||
foreach (LA_FILE ${LA_REL_SRC})
|
foreach (LA_FILE ${LA_REL_SRC})
|
||||||
list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/${LA_FILE}")
|
list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/${LA_FILE}")
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
foreach (LA_FILE ${LA_GEN_SRC})
|
||||||
|
list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/TESTING/MATGEN/${LA_FILE}")
|
||||||
|
endforeach ()
|
||||||
set_source_files_properties(${LA_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS}")
|
set_source_files_properties(${LA_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS}")
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
set(C_SRC
|
set(CSRC
|
||||||
lapacke_cbbcsd.c
|
lapacke_cbbcsd.c
|
||||||
lapacke_cbbcsd_work.c
|
lapacke_cbbcsd_work.c
|
||||||
lapacke_cbdsqr.c
|
lapacke_cbdsqr.c
|
||||||
|
|
@ -46,6 +46,8 @@ set(C_SRC
|
||||||
lapacke_cgehrd_work.c
|
lapacke_cgehrd_work.c
|
||||||
lapacke_cgejsv.c
|
lapacke_cgejsv.c
|
||||||
lapacke_cgejsv_work.c
|
lapacke_cgejsv_work.c
|
||||||
|
lapacke_cgelq.c
|
||||||
|
lapacke_cgelq_work.c
|
||||||
lapacke_cgelq2.c
|
lapacke_cgelq2.c
|
||||||
lapacke_cgelq2_work.c
|
lapacke_cgelq2_work.c
|
||||||
lapacke_cgelqf.c
|
lapacke_cgelqf.c
|
||||||
|
|
@ -60,12 +62,18 @@ set(C_SRC
|
||||||
lapacke_cgelsy_work.c
|
lapacke_cgelsy_work.c
|
||||||
lapacke_cgemqr.c
|
lapacke_cgemqr.c
|
||||||
lapacke_cgemqr_work.c
|
lapacke_cgemqr_work.c
|
||||||
|
lapacke_cgemlq.c
|
||||||
|
lapacke_cgemlq_work.c
|
||||||
lapacke_cgemqrt.c
|
lapacke_cgemqrt.c
|
||||||
lapacke_cgemqrt_work.c
|
lapacke_cgemqrt_work.c
|
||||||
lapacke_cgeqlf.c
|
lapacke_cgeqlf.c
|
||||||
lapacke_cgeqlf_work.c
|
lapacke_cgeqlf_work.c
|
||||||
lapacke_cgeqp3.c
|
lapacke_cgeqp3.c
|
||||||
lapacke_cgeqp3_work.c
|
lapacke_cgeqp3_work.c
|
||||||
|
lapacke_cgeqpf.c
|
||||||
|
lapacke_cgeqpf_work.c
|
||||||
|
lapacke_cgeqr.c
|
||||||
|
lapacke_cgeqr_work.c
|
||||||
lapacke_cgeqr2.c
|
lapacke_cgeqr2.c
|
||||||
lapacke_cgeqr2_work.c
|
lapacke_cgeqr2_work.c
|
||||||
lapacke_cgeqrf.c
|
lapacke_cgeqrf.c
|
||||||
|
|
@ -134,8 +142,12 @@ set(C_SRC
|
||||||
lapacke_cggqrf_work.c
|
lapacke_cggqrf_work.c
|
||||||
lapacke_cggrqf.c
|
lapacke_cggrqf.c
|
||||||
lapacke_cggrqf_work.c
|
lapacke_cggrqf_work.c
|
||||||
|
lapacke_cggsvd.c
|
||||||
|
lapacke_cggsvd_work.c
|
||||||
lapacke_cggsvd3.c
|
lapacke_cggsvd3.c
|
||||||
lapacke_cggsvd3_work.c
|
lapacke_cggsvd3_work.c
|
||||||
|
lapacke_cggsvp.c
|
||||||
|
lapacke_cggsvp_work.c
|
||||||
lapacke_cggsvp3.c
|
lapacke_cggsvp3.c
|
||||||
lapacke_cggsvp3_work.c
|
lapacke_cggsvp3_work.c
|
||||||
lapacke_cgtcon.c
|
lapacke_cgtcon.c
|
||||||
|
|
@ -210,6 +222,8 @@ set(C_SRC
|
||||||
lapacke_chesv_work.c
|
lapacke_chesv_work.c
|
||||||
lapacke_chesv_aa.c
|
lapacke_chesv_aa.c
|
||||||
lapacke_chesv_aa_work.c
|
lapacke_chesv_aa_work.c
|
||||||
|
lapacke_chesv_aa_2stage.c
|
||||||
|
lapacke_chesv_aa_2stage_work.c
|
||||||
lapacke_chesv_rk.c
|
lapacke_chesv_rk.c
|
||||||
lapacke_chesv_rk_work.c
|
lapacke_chesv_rk_work.c
|
||||||
lapacke_chesvx.c
|
lapacke_chesvx.c
|
||||||
|
|
@ -224,6 +238,8 @@ set(C_SRC
|
||||||
lapacke_chetrf_rook_work.c
|
lapacke_chetrf_rook_work.c
|
||||||
lapacke_chetrf_aa.c
|
lapacke_chetrf_aa.c
|
||||||
lapacke_chetrf_aa_work.c
|
lapacke_chetrf_aa_work.c
|
||||||
|
lapacke_chetrf_aa_2stage.c
|
||||||
|
lapacke_chetrf_aa_2stage_work.c
|
||||||
lapacke_chetrf_rk.c
|
lapacke_chetrf_rk.c
|
||||||
lapacke_chetrf_rk_work.c
|
lapacke_chetrf_rk_work.c
|
||||||
lapacke_chetri.c
|
lapacke_chetri.c
|
||||||
|
|
@ -242,6 +258,9 @@ set(C_SRC
|
||||||
lapacke_chetrs_rook_work.c
|
lapacke_chetrs_rook_work.c
|
||||||
lapacke_chetrs_aa.c
|
lapacke_chetrs_aa.c
|
||||||
lapacke_chetrs_aa_work.c
|
lapacke_chetrs_aa_work.c
|
||||||
|
lapacke_chetrs_aa_2stage.c
|
||||||
|
lapacke_chetrs_aa_2stage_work.c
|
||||||
|
lapacke_chetrf_rk.c
|
||||||
lapacke_chetrs_3.c
|
lapacke_chetrs_3.c
|
||||||
lapacke_chetrs_3_work.c
|
lapacke_chetrs_3_work.c
|
||||||
lapacke_chfrk.c
|
lapacke_chfrk.c
|
||||||
|
|
@ -290,6 +309,11 @@ set(C_SRC
|
||||||
lapacke_clacp2_work.c
|
lapacke_clacp2_work.c
|
||||||
lapacke_clacpy.c
|
lapacke_clacpy.c
|
||||||
lapacke_clacpy_work.c
|
lapacke_clacpy_work.c
|
||||||
|
lapacke_clacrm.c
|
||||||
|
lapacke_clacrm_work.c
|
||||||
|
lapacke_clarcm.c
|
||||||
|
lapacke_clarcm_work.c
|
||||||
|
lapacke_clacn2.c
|
||||||
lapacke_clag2z.c
|
lapacke_clag2z.c
|
||||||
lapacke_clag2z_work.c
|
lapacke_clag2z_work.c
|
||||||
lapacke_clange.c
|
lapacke_clange.c
|
||||||
|
|
@ -318,6 +342,8 @@ set(C_SRC
|
||||||
lapacke_clascl_work.c
|
lapacke_clascl_work.c
|
||||||
lapacke_claset.c
|
lapacke_claset.c
|
||||||
lapacke_claset_work.c
|
lapacke_claset_work.c
|
||||||
|
lapacke_classq.c
|
||||||
|
lapacke_classq_work.c
|
||||||
lapacke_claswp.c
|
lapacke_claswp.c
|
||||||
lapacke_claswp_work.c
|
lapacke_claswp_work.c
|
||||||
lapacke_clauum.c
|
lapacke_clauum.c
|
||||||
|
|
@ -436,6 +462,8 @@ set(C_SRC
|
||||||
lapacke_csysv_work.c
|
lapacke_csysv_work.c
|
||||||
lapacke_csysv_aa.c
|
lapacke_csysv_aa.c
|
||||||
lapacke_csysv_aa_work.c
|
lapacke_csysv_aa_work.c
|
||||||
|
lapacke_csysv_aa_2stage.c
|
||||||
|
lapacke_csysv_aa_2stage_work.c
|
||||||
lapacke_csysv_rk.c
|
lapacke_csysv_rk.c
|
||||||
lapacke_csysv_rk_work.c
|
lapacke_csysv_rk_work.c
|
||||||
lapacke_csysvx.c
|
lapacke_csysvx.c
|
||||||
|
|
@ -448,6 +476,8 @@ set(C_SRC
|
||||||
lapacke_csytrf_rook_work.c
|
lapacke_csytrf_rook_work.c
|
||||||
lapacke_csytrf_aa.c
|
lapacke_csytrf_aa.c
|
||||||
lapacke_csytrf_aa_work.c
|
lapacke_csytrf_aa_work.c
|
||||||
|
lapacke_csytrf_aa_2stage.c
|
||||||
|
lapacke_csytrf_aa_2stage_work.c
|
||||||
lapacke_csytrf_rk.c
|
lapacke_csytrf_rk.c
|
||||||
lapacke_csytrf_rk_work.c
|
lapacke_csytrf_rk_work.c
|
||||||
lapacke_csytri.c
|
lapacke_csytri.c
|
||||||
|
|
@ -466,6 +496,8 @@ set(C_SRC
|
||||||
lapacke_csytrs_rook_work.c
|
lapacke_csytrs_rook_work.c
|
||||||
lapacke_csytrs_aa.c
|
lapacke_csytrs_aa.c
|
||||||
lapacke_csytrs_aa_work.c
|
lapacke_csytrs_aa_work.c
|
||||||
|
lapacke_csytrs_aa_2stage.c
|
||||||
|
lapacke_csytrs_aa_2stage_work.c
|
||||||
lapacke_csytrs_3.c
|
lapacke_csytrs_3.c
|
||||||
lapacke_csytrs_3_work.c
|
lapacke_csytrs_3_work.c
|
||||||
lapacke_ctbcon.c
|
lapacke_ctbcon.c
|
||||||
|
|
@ -633,6 +665,8 @@ set(DSRC
|
||||||
lapacke_dgehrd_work.c
|
lapacke_dgehrd_work.c
|
||||||
lapacke_dgejsv.c
|
lapacke_dgejsv.c
|
||||||
lapacke_dgejsv_work.c
|
lapacke_dgejsv_work.c
|
||||||
|
lapacke_dgelq.c
|
||||||
|
lapacke_dgelq_work.c
|
||||||
lapacke_dgelq2.c
|
lapacke_dgelq2.c
|
||||||
lapacke_dgelq2_work.c
|
lapacke_dgelq2_work.c
|
||||||
lapacke_dgelqf.c
|
lapacke_dgelqf.c
|
||||||
|
|
@ -645,6 +679,8 @@ set(DSRC
|
||||||
lapacke_dgelss_work.c
|
lapacke_dgelss_work.c
|
||||||
lapacke_dgelsy.c
|
lapacke_dgelsy.c
|
||||||
lapacke_dgelsy_work.c
|
lapacke_dgelsy_work.c
|
||||||
|
lapacke_dgemlq.c
|
||||||
|
lapacke_dgemlq_work.c
|
||||||
lapacke_dgemqr.c
|
lapacke_dgemqr.c
|
||||||
lapacke_dgemqr_work.c
|
lapacke_dgemqr_work.c
|
||||||
lapacke_dgemqrt.c
|
lapacke_dgemqrt.c
|
||||||
|
|
@ -653,6 +689,10 @@ set(DSRC
|
||||||
lapacke_dgeqlf_work.c
|
lapacke_dgeqlf_work.c
|
||||||
lapacke_dgeqp3.c
|
lapacke_dgeqp3.c
|
||||||
lapacke_dgeqp3_work.c
|
lapacke_dgeqp3_work.c
|
||||||
|
lapacke_dgeqpf.c
|
||||||
|
lapacke_dgeqpf_work.c
|
||||||
|
lapacke_dgeqr.c
|
||||||
|
lapacke_dgeqr_work.c
|
||||||
lapacke_dgeqr2.c
|
lapacke_dgeqr2.c
|
||||||
lapacke_dgeqr2_work.c
|
lapacke_dgeqr2_work.c
|
||||||
lapacke_dgeqrf.c
|
lapacke_dgeqrf.c
|
||||||
|
|
@ -721,8 +761,12 @@ set(DSRC
|
||||||
lapacke_dggqrf_work.c
|
lapacke_dggqrf_work.c
|
||||||
lapacke_dggrqf.c
|
lapacke_dggrqf.c
|
||||||
lapacke_dggrqf_work.c
|
lapacke_dggrqf_work.c
|
||||||
|
lapacke_dggsvd.c
|
||||||
|
lapacke_dggsvd_work.c
|
||||||
lapacke_dggsvd3.c
|
lapacke_dggsvd3.c
|
||||||
lapacke_dggsvd3_work.c
|
lapacke_dggsvd3_work.c
|
||||||
|
lapacke_dggsvp.c
|
||||||
|
lapacke_dggsvp_work.c
|
||||||
lapacke_dggsvp3.c
|
lapacke_dggsvp3.c
|
||||||
lapacke_dggsvp3_work.c
|
lapacke_dggsvp3_work.c
|
||||||
lapacke_dgtcon.c
|
lapacke_dgtcon.c
|
||||||
|
|
@ -785,6 +829,9 @@ set(DSRC
|
||||||
lapacke_dlaset_work.c
|
lapacke_dlaset_work.c
|
||||||
lapacke_dlasrt.c
|
lapacke_dlasrt.c
|
||||||
lapacke_dlasrt_work.c
|
lapacke_dlasrt_work.c
|
||||||
|
lapacke_dlassq.c
|
||||||
|
lapacke_dlassq_work.c
|
||||||
|
lapacke_dlaswp.c
|
||||||
lapacke_dlaswp.c
|
lapacke_dlaswp.c
|
||||||
lapacke_dlaswp_work.c
|
lapacke_dlaswp_work.c
|
||||||
lapacke_dlauum.c
|
lapacke_dlauum.c
|
||||||
|
|
@ -1025,6 +1072,8 @@ set(DSRC
|
||||||
lapacke_dsysv_work.c
|
lapacke_dsysv_work.c
|
||||||
lapacke_dsysv_aa.c
|
lapacke_dsysv_aa.c
|
||||||
lapacke_dsysv_aa_work.c
|
lapacke_dsysv_aa_work.c
|
||||||
|
lapacke_dsysv_aa_2stage.c
|
||||||
|
lapacke_dsysv_aa_2stage_work.c
|
||||||
lapacke_dsysv_rk.c
|
lapacke_dsysv_rk.c
|
||||||
lapacke_dsysv_rk_work.c
|
lapacke_dsysv_rk_work.c
|
||||||
lapacke_dsysvx.c
|
lapacke_dsysvx.c
|
||||||
|
|
@ -1039,6 +1088,8 @@ set(DSRC
|
||||||
lapacke_dsytrf_rook_work.c
|
lapacke_dsytrf_rook_work.c
|
||||||
lapacke_dsytrf_aa.c
|
lapacke_dsytrf_aa.c
|
||||||
lapacke_dsytrf_aa_work.c
|
lapacke_dsytrf_aa_work.c
|
||||||
|
lapacke_dsytrf_aa_2stage.c
|
||||||
|
lapacke_dsytrf_aa_2stage_work.c
|
||||||
lapacke_dsytrf_rk.c
|
lapacke_dsytrf_rk.c
|
||||||
lapacke_dsytrf_rk_work.c
|
lapacke_dsytrf_rk_work.c
|
||||||
lapacke_dsytri.c
|
lapacke_dsytri.c
|
||||||
|
|
@ -1055,6 +1106,8 @@ set(DSRC
|
||||||
lapacke_dsytrs2_work.c
|
lapacke_dsytrs2_work.c
|
||||||
lapacke_dsytrs_aa.c
|
lapacke_dsytrs_aa.c
|
||||||
lapacke_dsytrs_aa_work.c
|
lapacke_dsytrs_aa_work.c
|
||||||
|
lapacke_dsytrs_aa_2stage.c
|
||||||
|
lapacke_dsytrs_aa_2stage_work.c
|
||||||
lapacke_dsytrs_3.c
|
lapacke_dsytrs_3.c
|
||||||
lapacke_dsytrs_3_work.c
|
lapacke_dsytrs_3_work.c
|
||||||
lapacke_dsytrs_work.c
|
lapacke_dsytrs_work.c
|
||||||
|
|
@ -1184,6 +1237,8 @@ set(SSRC
|
||||||
lapacke_sgehrd_work.c
|
lapacke_sgehrd_work.c
|
||||||
lapacke_sgejsv.c
|
lapacke_sgejsv.c
|
||||||
lapacke_sgejsv_work.c
|
lapacke_sgejsv_work.c
|
||||||
|
lapacke_sgelq.c
|
||||||
|
lapacke_sgelq_work.c
|
||||||
lapacke_sgelq2.c
|
lapacke_sgelq2.c
|
||||||
lapacke_sgelq2_work.c
|
lapacke_sgelq2_work.c
|
||||||
lapacke_sgelqf.c
|
lapacke_sgelqf.c
|
||||||
|
|
@ -1196,6 +1251,8 @@ set(SSRC
|
||||||
lapacke_sgelss_work.c
|
lapacke_sgelss_work.c
|
||||||
lapacke_sgelsy.c
|
lapacke_sgelsy.c
|
||||||
lapacke_sgelsy_work.c
|
lapacke_sgelsy_work.c
|
||||||
|
lapacke_sgemlq.c
|
||||||
|
lapacke_sgemlq_work.c
|
||||||
lapacke_sgemqr.c
|
lapacke_sgemqr.c
|
||||||
lapacke_sgemqr_work.c
|
lapacke_sgemqr_work.c
|
||||||
lapacke_sgemqrt.c
|
lapacke_sgemqrt.c
|
||||||
|
|
@ -1204,6 +1261,10 @@ set(SSRC
|
||||||
lapacke_sgeqlf_work.c
|
lapacke_sgeqlf_work.c
|
||||||
lapacke_sgeqp3.c
|
lapacke_sgeqp3.c
|
||||||
lapacke_sgeqp3_work.c
|
lapacke_sgeqp3_work.c
|
||||||
|
lapacke_sgeqpf.c
|
||||||
|
lapacke_sgeqpf_work.c
|
||||||
|
lapacke_sgeqr.c
|
||||||
|
lapacke_sgeqr_work.c
|
||||||
lapacke_sgeqr2.c
|
lapacke_sgeqr2.c
|
||||||
lapacke_sgeqr2_work.c
|
lapacke_sgeqr2_work.c
|
||||||
lapacke_sgeqrf.c
|
lapacke_sgeqrf.c
|
||||||
|
|
@ -1272,8 +1333,12 @@ set(SSRC
|
||||||
lapacke_sggqrf_work.c
|
lapacke_sggqrf_work.c
|
||||||
lapacke_sggrqf.c
|
lapacke_sggrqf.c
|
||||||
lapacke_sggrqf_work.c
|
lapacke_sggrqf_work.c
|
||||||
|
lapacke_sggsvd.c
|
||||||
|
lapacke_sggsvd_work.c
|
||||||
lapacke_sggsvd3.c
|
lapacke_sggsvd3.c
|
||||||
lapacke_sggsvd3_work.c
|
lapacke_sggsvd3_work.c
|
||||||
|
lapacke_sggsvp.c
|
||||||
|
lapacke_sggsvp_work.c
|
||||||
lapacke_sggsvp3.c
|
lapacke_sggsvp3.c
|
||||||
lapacke_sggsvp3_work.c
|
lapacke_sggsvp3_work.c
|
||||||
lapacke_sgtcon.c
|
lapacke_sgtcon.c
|
||||||
|
|
@ -1336,6 +1401,8 @@ set(SSRC
|
||||||
lapacke_slaset_work.c
|
lapacke_slaset_work.c
|
||||||
lapacke_slasrt.c
|
lapacke_slasrt.c
|
||||||
lapacke_slasrt_work.c
|
lapacke_slasrt_work.c
|
||||||
|
lapacke_slassq.c
|
||||||
|
lapacke_slassq_work.c
|
||||||
lapacke_slaswp.c
|
lapacke_slaswp.c
|
||||||
lapacke_slaswp_work.c
|
lapacke_slaswp_work.c
|
||||||
lapacke_slauum.c
|
lapacke_slauum.c
|
||||||
|
|
@ -1572,6 +1639,8 @@ set(SSRC
|
||||||
lapacke_ssysv_work.c
|
lapacke_ssysv_work.c
|
||||||
lapacke_ssysv_aa.c
|
lapacke_ssysv_aa.c
|
||||||
lapacke_ssysv_aa_work.c
|
lapacke_ssysv_aa_work.c
|
||||||
|
lapacke_ssysv_aa_2stage.c
|
||||||
|
lapacke_ssysv_aa_2stage_work.c
|
||||||
lapacke_ssysv_rk.c
|
lapacke_ssysv_rk.c
|
||||||
lapacke_ssysv_rk_work.c
|
lapacke_ssysv_rk_work.c
|
||||||
lapacke_ssysvx.c
|
lapacke_ssysvx.c
|
||||||
|
|
@ -1586,6 +1655,9 @@ set(SSRC
|
||||||
lapacke_ssytrf_rook_work.c
|
lapacke_ssytrf_rook_work.c
|
||||||
lapacke_ssytrf_aa.c
|
lapacke_ssytrf_aa.c
|
||||||
lapacke_ssytrf_aa_work.c
|
lapacke_ssytrf_aa_work.c
|
||||||
|
lapacke_ssytrf_aa_2stage.c
|
||||||
|
lapacke_ssytrf_aa_2stage_work.c
|
||||||
|
lapacke_ssytrf_rook.c
|
||||||
lapacke_ssytrf_rk.c
|
lapacke_ssytrf_rk.c
|
||||||
lapacke_ssytrf_rk_work.c
|
lapacke_ssytrf_rk_work.c
|
||||||
lapacke_ssytri.c
|
lapacke_ssytri.c
|
||||||
|
|
@ -1602,6 +1674,8 @@ set(SSRC
|
||||||
lapacke_ssytrs2_work.c
|
lapacke_ssytrs2_work.c
|
||||||
lapacke_ssytrs_aa.c
|
lapacke_ssytrs_aa.c
|
||||||
lapacke_ssytrs_aa_work.c
|
lapacke_ssytrs_aa_work.c
|
||||||
|
lapacke_ssytrs_aa_2stage.c
|
||||||
|
lapacke_ssytrs_aa_2stage_work.c
|
||||||
lapacke_ssytrs_3.c
|
lapacke_ssytrs_3.c
|
||||||
lapacke_ssytrs_3_work.c
|
lapacke_ssytrs_3_work.c
|
||||||
lapacke_ssytrs_work.c
|
lapacke_ssytrs_work.c
|
||||||
|
|
@ -1729,6 +1803,8 @@ set(ZSRC
|
||||||
lapacke_zgehrd_work.c
|
lapacke_zgehrd_work.c
|
||||||
lapacke_zgejsv.c
|
lapacke_zgejsv.c
|
||||||
lapacke_zgejsv_work.c
|
lapacke_zgejsv_work.c
|
||||||
|
lapacke_zgelq.c
|
||||||
|
lapacke_zgelq_work.c
|
||||||
lapacke_zgelq2.c
|
lapacke_zgelq2.c
|
||||||
lapacke_zgelq2_work.c
|
lapacke_zgelq2_work.c
|
||||||
lapacke_zgelqf.c
|
lapacke_zgelqf.c
|
||||||
|
|
@ -1741,6 +1817,8 @@ set(ZSRC
|
||||||
lapacke_zgelss_work.c
|
lapacke_zgelss_work.c
|
||||||
lapacke_zgelsy.c
|
lapacke_zgelsy.c
|
||||||
lapacke_zgelsy_work.c
|
lapacke_zgelsy_work.c
|
||||||
|
lapacke_zgemlq.c
|
||||||
|
lapacke_zgemlq_work.c
|
||||||
lapacke_zgemqr.c
|
lapacke_zgemqr.c
|
||||||
lapacke_zgemqr_work.c
|
lapacke_zgemqr_work.c
|
||||||
lapacke_zgemqrt.c
|
lapacke_zgemqrt.c
|
||||||
|
|
@ -1749,6 +1827,10 @@ set(ZSRC
|
||||||
lapacke_zgeqlf_work.c
|
lapacke_zgeqlf_work.c
|
||||||
lapacke_zgeqp3.c
|
lapacke_zgeqp3.c
|
||||||
lapacke_zgeqp3_work.c
|
lapacke_zgeqp3_work.c
|
||||||
|
lapacke_zgeqpf.c
|
||||||
|
lapacke_zgeqpf_work.c
|
||||||
|
lapacke_zgeqr.c
|
||||||
|
lapacke_zgeqr_work.c
|
||||||
lapacke_zgeqr2.c
|
lapacke_zgeqr2.c
|
||||||
lapacke_zgeqr2_work.c
|
lapacke_zgeqr2_work.c
|
||||||
lapacke_zgeqrf.c
|
lapacke_zgeqrf.c
|
||||||
|
|
@ -1817,8 +1899,12 @@ set(ZSRC
|
||||||
lapacke_zggqrf_work.c
|
lapacke_zggqrf_work.c
|
||||||
lapacke_zggrqf.c
|
lapacke_zggrqf.c
|
||||||
lapacke_zggrqf_work.c
|
lapacke_zggrqf_work.c
|
||||||
|
lapacke_zggsvd.c
|
||||||
|
lapacke_zggsvd_work.c
|
||||||
lapacke_zggsvd3.c
|
lapacke_zggsvd3.c
|
||||||
lapacke_zggsvd3_work.c
|
lapacke_zggsvd3_work.c
|
||||||
|
lapacke_zggsvp.c
|
||||||
|
lapacke_zggsvp_work.c
|
||||||
lapacke_zggsvp3.c
|
lapacke_zggsvp3.c
|
||||||
lapacke_zggsvp3_work.c
|
lapacke_zggsvp3_work.c
|
||||||
lapacke_zgtcon.c
|
lapacke_zgtcon.c
|
||||||
|
|
@ -1839,6 +1925,12 @@ set(ZSRC
|
||||||
lapacke_zhbevd_work.c
|
lapacke_zhbevd_work.c
|
||||||
lapacke_zhbevx.c
|
lapacke_zhbevx.c
|
||||||
lapacke_zhbevx_work.c
|
lapacke_zhbevx_work.c
|
||||||
|
lapacke_zhbev_2stage.c
|
||||||
|
lapacke_zhbev_2stage_work.c
|
||||||
|
lapacke_zhbevd_2stage.c
|
||||||
|
lapacke_zhbevd_2stage_work.c
|
||||||
|
lapacke_zhbevx_2stage.c
|
||||||
|
lapacke_zhbevx_2stage_work.c
|
||||||
lapacke_zhbgst.c
|
lapacke_zhbgst.c
|
||||||
lapacke_zhbgst_work.c
|
lapacke_zhbgst_work.c
|
||||||
lapacke_zhbgv.c
|
lapacke_zhbgv.c
|
||||||
|
|
@ -1887,6 +1979,8 @@ set(ZSRC
|
||||||
lapacke_zhesv_work.c
|
lapacke_zhesv_work.c
|
||||||
lapacke_zhesv_aa.c
|
lapacke_zhesv_aa.c
|
||||||
lapacke_zhesv_aa_work.c
|
lapacke_zhesv_aa_work.c
|
||||||
|
lapacke_zhesv_aa_2stage.c
|
||||||
|
lapacke_zhesv_aa_2stage_work.c
|
||||||
lapacke_zhesv_rk.c
|
lapacke_zhesv_rk.c
|
||||||
lapacke_zhesv_rk_work.c
|
lapacke_zhesv_rk_work.c
|
||||||
lapacke_zhesvx.c
|
lapacke_zhesvx.c
|
||||||
|
|
@ -1901,6 +1995,8 @@ set(ZSRC
|
||||||
lapacke_zhetrf_rook_work.c
|
lapacke_zhetrf_rook_work.c
|
||||||
lapacke_zhetrf_aa.c
|
lapacke_zhetrf_aa.c
|
||||||
lapacke_zhetrf_aa_work.c
|
lapacke_zhetrf_aa_work.c
|
||||||
|
lapacke_zhetrf_aa_2stage.c
|
||||||
|
lapacke_zhetrf_aa_2stage_work.c
|
||||||
lapacke_zhetrf_rk.c
|
lapacke_zhetrf_rk.c
|
||||||
lapacke_zhetrf_rk_work.c
|
lapacke_zhetrf_rk_work.c
|
||||||
lapacke_zhetri.c
|
lapacke_zhetri.c
|
||||||
|
|
@ -1918,6 +2014,8 @@ set(ZSRC
|
||||||
lapacke_zhetrs_work.c
|
lapacke_zhetrs_work.c
|
||||||
lapacke_zhetrs_aa.c
|
lapacke_zhetrs_aa.c
|
||||||
lapacke_zhetrs_aa_work.c
|
lapacke_zhetrs_aa_work.c
|
||||||
|
lapacke_zhetrs_aa_2stage.c
|
||||||
|
lapacke_zhetrs_aa_2stage_work.c
|
||||||
lapacke_zhetrs_3.c
|
lapacke_zhetrs_3.c
|
||||||
lapacke_zhetrs_3_work.c
|
lapacke_zhetrs_3_work.c
|
||||||
lapacke_zhetrs_rook_work.c
|
lapacke_zhetrs_rook_work.c
|
||||||
|
|
@ -1967,6 +2065,8 @@ set(ZSRC
|
||||||
lapacke_zlacp2_work.c
|
lapacke_zlacp2_work.c
|
||||||
lapacke_zlacpy.c
|
lapacke_zlacpy.c
|
||||||
lapacke_zlacpy_work.c
|
lapacke_zlacpy_work.c
|
||||||
|
lapacke_zlacrm.c
|
||||||
|
lapacke_zlacrm_work.c
|
||||||
lapacke_zlag2c.c
|
lapacke_zlag2c.c
|
||||||
lapacke_zlag2c_work.c
|
lapacke_zlag2c_work.c
|
||||||
lapacke_zlange.c
|
lapacke_zlange.c
|
||||||
|
|
@ -1981,6 +2081,8 @@ set(ZSRC
|
||||||
lapacke_zlapmr_work.c
|
lapacke_zlapmr_work.c
|
||||||
lapacke_zlapmt.c
|
lapacke_zlapmt.c
|
||||||
lapacke_zlapmt_work.c
|
lapacke_zlapmt_work.c
|
||||||
|
lapacke_zlarcm.c
|
||||||
|
lapacke_zlarcm_work.c
|
||||||
lapacke_zlarfb.c
|
lapacke_zlarfb.c
|
||||||
lapacke_zlarfb_work.c
|
lapacke_zlarfb_work.c
|
||||||
lapacke_zlarfg.c
|
lapacke_zlarfg.c
|
||||||
|
|
@ -1995,6 +2097,8 @@ set(ZSRC
|
||||||
lapacke_zlascl_work.c
|
lapacke_zlascl_work.c
|
||||||
lapacke_zlaset.c
|
lapacke_zlaset.c
|
||||||
lapacke_zlaset_work.c
|
lapacke_zlaset_work.c
|
||||||
|
lapacke_zlassq.c
|
||||||
|
lapacke_zlassq_work.c
|
||||||
lapacke_zlaswp.c
|
lapacke_zlaswp.c
|
||||||
lapacke_zlaswp_work.c
|
lapacke_zlaswp_work.c
|
||||||
lapacke_zlauum.c
|
lapacke_zlauum.c
|
||||||
|
|
@ -2113,6 +2217,8 @@ set(ZSRC
|
||||||
lapacke_zsysv_work.c
|
lapacke_zsysv_work.c
|
||||||
lapacke_zsysv_aa.c
|
lapacke_zsysv_aa.c
|
||||||
lapacke_zsysv_aa_work.c
|
lapacke_zsysv_aa_work.c
|
||||||
|
lapacke_zsysv_aa_2stage.c
|
||||||
|
lapacke_zsysv_aa_2stage_work.c
|
||||||
lapacke_zsysv_rk.c
|
lapacke_zsysv_rk.c
|
||||||
lapacke_zsysv_rk_work.c
|
lapacke_zsysv_rk_work.c
|
||||||
lapacke_zsysvx.c
|
lapacke_zsysvx.c
|
||||||
|
|
@ -2125,6 +2231,8 @@ set(ZSRC
|
||||||
lapacke_zsytrf_rook_work.c
|
lapacke_zsytrf_rook_work.c
|
||||||
lapacke_zsytrf_aa.c
|
lapacke_zsytrf_aa.c
|
||||||
lapacke_zsytrf_aa_work.c
|
lapacke_zsytrf_aa_work.c
|
||||||
|
lapacke_zsytrf_aa_2stage.c
|
||||||
|
lapacke_zsytrf_aa_2stage_work.c
|
||||||
lapacke_zsytrf_rk.c
|
lapacke_zsytrf_rk.c
|
||||||
lapacke_zsytrf_rk_work.c
|
lapacke_zsytrf_rk_work.c
|
||||||
lapacke_zsytri.c
|
lapacke_zsytri.c
|
||||||
|
|
@ -2143,6 +2251,8 @@ set(ZSRC
|
||||||
lapacke_zsytrs_rook_work.c
|
lapacke_zsytrs_rook_work.c
|
||||||
lapacke_zsytrs_aa.c
|
lapacke_zsytrs_aa.c
|
||||||
lapacke_zsytrs_aa_work.c
|
lapacke_zsytrs_aa_work.c
|
||||||
|
lapacke_zsytrs_aa_2stage.c
|
||||||
|
lapacke_zsytrs_aa_2stage_work.c
|
||||||
lapacke_zsytrs_3.c
|
lapacke_zsytrs_3.c
|
||||||
lapacke_zsytrs_3_work.c
|
lapacke_zsytrs_3_work.c
|
||||||
lapacke_ztbcon.c
|
lapacke_ztbcon.c
|
||||||
|
|
@ -2308,59 +2418,47 @@ set(MATGEN
|
||||||
lapacke_slagsy_work.c
|
lapacke_slagsy_work.c
|
||||||
lapacke_zlagsy.c
|
lapacke_zlagsy.c
|
||||||
lapacke_zlagsy_work.c
|
lapacke_zlagsy_work.c
|
||||||
|
lapacke_nancheck.c
|
||||||
)
|
)
|
||||||
|
|
||||||
set(Utils_SRC
|
set(Utils_SRC
|
||||||
lapacke_cgb_nancheck.c lapacke_dpf_nancheck.c lapacke_ssy_trans.c
|
lapacke_c_nancheck.c lapacke_ctr_trans.c lapacke_make_complex_float.c lapacke_zgb_nancheck.c
|
||||||
lapacke_cgb_trans.c lapacke_dpf_trans.c lapacke_stb_nancheck.c
|
lapacke_cgb_nancheck.c lapacke_d_nancheck.c lapacke_s_nancheck.c lapacke_zgb_trans.c
|
||||||
lapacke_cge_nancheck.c lapacke_dpo_nancheck.c lapacke_stb_trans.c
|
lapacke_cgb_trans.c lapacke_dgb_nancheck.c lapacke_sgb_nancheck.c lapacke_zge_nancheck.c
|
||||||
lapacke_cge_trans.c lapacke_dpo_trans.c lapacke_stf_nancheck.c
|
lapacke_cge_nancheck.c lapacke_dgb_trans.c lapacke_sgb_trans.c lapacke_zge_trans.c
|
||||||
lapacke_cgg_nancheck.c lapacke_dpp_nancheck.c lapacke_stf_trans.c
|
lapacke_cge_trans.c lapacke_dge_nancheck.c lapacke_sge_nancheck.c lapacke_zgg_nancheck.c
|
||||||
lapacke_cgg_trans.c lapacke_dpp_trans.c lapacke_stp_nancheck.c
|
lapacke_cgg_nancheck.c lapacke_dge_trans.c lapacke_sge_trans.c lapacke_zgg_trans.c
|
||||||
lapacke_cgt_nancheck.c lapacke_dpt_nancheck.c lapacke_stp_trans.c
|
lapacke_cgg_trans.c lapacke_dgg_nancheck.c lapacke_sgg_nancheck.c lapacke_zgt_nancheck.c
|
||||||
lapacke_chb_nancheck.c lapacke_dsb_nancheck.c lapacke_str_nancheck.c
|
lapacke_cgt_nancheck.c lapacke_dgg_trans.c lapacke_sgg_trans.c lapacke_zhb_nancheck.c
|
||||||
lapacke_chb_trans.c lapacke_dsb_trans.c lapacke_str_trans.c
|
lapacke_chb_nancheck.c lapacke_dgt_nancheck.c lapacke_sgt_nancheck.c lapacke_zhb_trans.c
|
||||||
lapacke_che_nancheck.c lapacke_dsp_nancheck.c lapacke_xerbla.c
|
lapacke_chb_trans.c lapacke_dhs_nancheck.c lapacke_shs_nancheck.c lapacke_zhe_nancheck.c
|
||||||
lapacke_che_trans.c lapacke_dsp_trans.c lapacke_zgb_nancheck.c
|
lapacke_che_nancheck.c lapacke_dhs_trans.c lapacke_shs_trans.c lapacke_zhe_trans.c
|
||||||
lapacke_chp_nancheck.c lapacke_dst_nancheck.c lapacke_zgb_trans.c
|
lapacke_che_trans.c lapacke_dpb_nancheck.c lapacke_spb_nancheck.c lapacke_zhp_nancheck.c
|
||||||
lapacke_chp_trans.c lapacke_dsy_nancheck.c lapacke_zge_nancheck.c
|
lapacke_chp_nancheck.c lapacke_dpb_trans.c lapacke_spb_trans.c lapacke_zhp_trans.c
|
||||||
lapacke_chs_nancheck.c lapacke_dsy_trans.c lapacke_zge_trans.c
|
lapacke_chp_trans.c lapacke_dpf_nancheck.c lapacke_spf_nancheck.c lapacke_zhs_nancheck.c
|
||||||
lapacke_chs_trans.c lapacke_dtb_nancheck.c lapacke_zgg_nancheck.c
|
lapacke_chs_nancheck.c lapacke_dpf_trans.c lapacke_spf_trans.c lapacke_zhs_trans.c
|
||||||
lapacke_c_nancheck.c lapacke_dtb_trans.c lapacke_zgg_trans.c
|
lapacke_chs_trans.c lapacke_dpo_nancheck.c lapacke_spo_nancheck.c lapacke_zpb_nancheck.c
|
||||||
lapacke_cpb_nancheck.c lapacke_dtf_nancheck.c lapacke_zgt_nancheck.c
|
lapacke_cpb_nancheck.c lapacke_dpo_trans.c lapacke_spo_trans.c lapacke_zpb_trans.c
|
||||||
lapacke_cpb_trans.c lapacke_dtf_trans.c lapacke_zhb_nancheck.c
|
lapacke_cpb_trans.c lapacke_dpp_nancheck.c lapacke_spp_nancheck.c lapacke_zpf_nancheck.c
|
||||||
lapacke_cpf_nancheck.c lapacke_dtp_nancheck.c lapacke_zhb_trans.c
|
lapacke_cpf_nancheck.c lapacke_dpp_trans.c lapacke_spp_trans.c lapacke_zpf_trans.c
|
||||||
lapacke_cpf_trans.c lapacke_dtp_trans.c lapacke_zhe_nancheck.c
|
lapacke_cpf_trans.c lapacke_dpt_nancheck.c lapacke_spt_nancheck.c lapacke_zpo_nancheck.c
|
||||||
lapacke_cpo_nancheck.c lapacke_dtr_nancheck.c lapacke_zhe_trans.c
|
lapacke_cpo_nancheck.c lapacke_dsb_nancheck.c lapacke_ssb_nancheck.c lapacke_zpo_trans.c
|
||||||
lapacke_cpo_trans.c lapacke_dtr_trans.c lapacke_zhp_nancheck.c
|
lapacke_cpo_trans.c lapacke_dsb_trans.c lapacke_ssb_trans.c lapacke_zpp_nancheck.c
|
||||||
lapacke_cpp_nancheck.c lapacke_lsame.c lapacke_zhp_trans.c
|
lapacke_cpp_nancheck.c lapacke_dsp_nancheck.c lapacke_ssp_nancheck.c lapacke_zpp_trans.c
|
||||||
lapacke_cpp_trans.c lapacke_make_complex_double.c lapacke_zhs_nancheck.c
|
lapacke_cpp_trans.c lapacke_dsp_trans.c lapacke_ssp_trans.c lapacke_zpt_nancheck.c
|
||||||
lapacke_cpt_nancheck.c lapacke_make_complex_float.c lapacke_zhs_trans.c
|
lapacke_cpt_nancheck.c lapacke_dst_nancheck.c lapacke_sst_nancheck.c lapacke_zsp_nancheck.c
|
||||||
lapacke_csp_nancheck.c lapacke_sgb_nancheck.c lapacke_z_nancheck.c
|
lapacke_csp_nancheck.c lapacke_dsy_nancheck.c lapacke_ssy_nancheck.c lapacke_zsp_trans.c
|
||||||
lapacke_csp_trans.c lapacke_sgb_trans.c lapacke_zpb_nancheck.c
|
lapacke_csp_trans.c lapacke_dsy_trans.c lapacke_ssy_trans.c lapacke_zst_nancheck.c
|
||||||
lapacke_cst_nancheck.c lapacke_sge_nancheck.c lapacke_zpb_trans.c
|
lapacke_cst_nancheck.c lapacke_dtb_nancheck.c lapacke_stb_nancheck.c lapacke_zsy_nancheck.c
|
||||||
lapacke_csy_nancheck.c lapacke_sge_trans.c lapacke_zpf_nancheck.c
|
lapacke_csy_nancheck.c lapacke_dtb_trans.c lapacke_stb_trans.c lapacke_zsy_trans.c
|
||||||
lapacke_csy_trans.c lapacke_sgg_nancheck.c lapacke_zpf_trans.c
|
lapacke_csy_trans.c lapacke_dtf_nancheck.c lapacke_stf_nancheck.c lapacke_ztb_nancheck.c
|
||||||
lapacke_ctb_nancheck.c lapacke_sgg_trans.c lapacke_zpo_nancheck.c
|
lapacke_ctb_nancheck.c lapacke_dtf_trans.c lapacke_stf_trans.c lapacke_ztb_trans.c
|
||||||
lapacke_ctb_trans.c lapacke_sgt_nancheck.c lapacke_zpo_trans.c
|
lapacke_ctb_trans.c lapacke_dtp_nancheck.c lapacke_stp_nancheck.c lapacke_ztf_nancheck.c
|
||||||
lapacke_ctf_nancheck.c lapacke_shs_nancheck.c lapacke_zpp_nancheck.c
|
lapacke_ctf_nancheck.c lapacke_dtp_trans.c lapacke_stp_trans.c lapacke_ztf_trans.c
|
||||||
lapacke_ctf_trans.c lapacke_shs_trans.c lapacke_zpp_trans.c
|
lapacke_ctf_trans.c lapacke_dtr_nancheck.c lapacke_str_nancheck.c lapacke_ztp_nancheck.c
|
||||||
lapacke_ctp_nancheck.c lapacke_s_nancheck.c lapacke_zpt_nancheck.c
|
lapacke_ctp_nancheck.c lapacke_dtr_trans.c lapacke_str_trans.c lapacke_ztp_trans.c
|
||||||
lapacke_ctp_trans.c lapacke_spb_nancheck.c lapacke_zsp_nancheck.c
|
lapacke_ctp_trans.c lapacke_lsame.c lapacke_xerbla.c lapacke_ztr_nancheck.c
|
||||||
lapacke_ctr_nancheck.c lapacke_spb_trans.c lapacke_zsp_trans.c
|
lapacke_ctr_nancheck.c lapacke_make_complex_double.c lapacke_z_nancheck.c lapacke_ztr_trans.c
|
||||||
lapacke_ctr_trans.c lapacke_spf_nancheck.c lapacke_zst_nancheck.c
|
|
||||||
lapacke_dgb_nancheck.c lapacke_spf_trans.c lapacke_zsy_nancheck.c
|
|
||||||
lapacke_dgb_trans.c lapacke_spo_nancheck.c lapacke_zsy_trans.c
|
|
||||||
lapacke_dge_nancheck.c lapacke_spo_trans.c lapacke_ztb_nancheck.c
|
|
||||||
lapacke_dge_trans.c lapacke_spp_nancheck.c lapacke_ztb_trans.c
|
|
||||||
lapacke_dgg_nancheck.c lapacke_spp_trans.c lapacke_ztf_nancheck.c
|
|
||||||
lapacke_dgg_trans.c lapacke_spt_nancheck.c lapacke_ztf_trans.c
|
|
||||||
lapacke_dgt_nancheck.c lapacke_ssb_nancheck.c lapacke_ztp_nancheck.c
|
|
||||||
lapacke_dhs_nancheck.c lapacke_ssb_trans.c lapacke_ztp_trans.c
|
|
||||||
lapacke_dhs_trans.c lapacke_ssp_nancheck.c lapacke_ztr_nancheck.c
|
|
||||||
lapacke_d_nancheck.c lapacke_ssp_trans.c lapacke_ztr_trans.c
|
|
||||||
lapacke_dpb_nancheck.c lapacke_sst_nancheck.c
|
|
||||||
lapacke_dpb_trans.c lapacke_ssy_nancheck.c
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(LAPACKE_REL_SRC "")
|
set(LAPACKE_REL_SRC "")
|
||||||
|
|
@ -2380,6 +2478,10 @@ if (BUILD_COMPLEX16)
|
||||||
list(APPEND LAPACKE_REL_SRC ${ZSRC})
|
list(APPEND LAPACKE_REL_SRC ${ZSRC})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (BUILD_MATGEN)
|
||||||
|
list(APPEND LAPACKE_REL_SRC ${MATGEN})
|
||||||
|
endif ()
|
||||||
|
|
||||||
# add lapack-netlib folder to the sources
|
# add lapack-netlib folder to the sources
|
||||||
set(LAPACKE_SOURCES "")
|
set(LAPACKE_SOURCES "")
|
||||||
foreach (LAE_FILE ${LAPACKE_REL_SRC})
|
foreach (LAE_FILE ${LAPACKE_REL_SRC})
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,6 @@
|
||||||
## Description: Ported from portion of OpenBLAS/Makefile.system
|
## Description: Ported from portion of OpenBLAS/Makefile.system
|
||||||
## Detects the OS and sets appropriate variables.
|
## Detects the OS and sets appropriate variables.
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
|
||||||
set(ENV{MACOSX_DEPLOYMENT_TARGET} "10.2") # TODO: should be exported as an env var
|
|
||||||
set(MD5SUM "md5 -r")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
|
||||||
set(MD5SUM "md5 -r")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
|
|
||||||
set(MD5SUM "md5 -n")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||||
set(EXTRALIB "${EXTRALIB} -lm")
|
set(EXTRALIB "${EXTRALIB} -lm")
|
||||||
set(NO_EXPRECISION 1)
|
set(NO_EXPRECISION 1)
|
||||||
|
|
@ -56,7 +43,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
|
|
||||||
# Ensure the correct stack alignment on Win32
|
# Ensure the correct stack alignment on Win32
|
||||||
# http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
|
# http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
|
||||||
if (${ARCH} STREQUAL "x86")
|
if (X86)
|
||||||
if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
|
if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
@ -78,7 +65,7 @@ if (CYGWIN)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
|
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
set(EXTRALIB "${EXTRALIB} -lpthread")
|
set(EXTRALIB "${EXTRALIB} -lpthread")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
@ -88,7 +75,7 @@ if (QUAD_PRECISION)
|
||||||
set(NO_EXPRECISION 1)
|
set(NO_EXPRECISION 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "x86")
|
if (X86)
|
||||||
set(NO_EXPRECISION 1)
|
set(NO_EXPRECISION 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,56 +37,162 @@
|
||||||
|
|
||||||
# CPUIDEMU = ../../cpuid/table.o
|
# CPUIDEMU = ../../cpuid/table.o
|
||||||
|
|
||||||
|
|
||||||
if (DEFINED CPUIDEMU)
|
if (DEFINED CPUIDEMU)
|
||||||
set(EXFLAGS "-DCPUIDEMU -DVENDOR=99")
|
set(EXFLAGS "-DCPUIDEMU -DVENDOR=99")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (DEFINED TARGET_CORE)
|
if (BUILD_KERNEL)
|
||||||
# set the C flags for just this file
|
# set the C flags for just this file
|
||||||
set(GETARCH2_FLAGS "-DBUILD_KERNEL")
|
set(GETARCH2_FLAGS "-DBUILD_KERNEL")
|
||||||
set(TARGET_MAKE "Makefile_kernel.conf")
|
|
||||||
set(TARGET_CONF "config_kernel.h")
|
set(TARGET_CONF "config_kernel.h")
|
||||||
set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE})
|
set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE})
|
||||||
else()
|
else()
|
||||||
set(TARGET_MAKE "Makefile.conf")
|
|
||||||
set(TARGET_CONF "config.h")
|
set(TARGET_CONF "config.h")
|
||||||
set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR})
|
set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp")
|
set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp")
|
||||||
include("${PROJECT_SOURCE_DIR}/cmake/c_check.cmake")
|
|
||||||
|
|
||||||
|
# c_check
|
||||||
|
set(FU "")
|
||||||
|
if (APPLE OR (MSVC AND NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang"))
|
||||||
|
set(FU "_")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(COMPILER_ID ${CMAKE_C_COMPILER_ID})
|
||||||
|
if (${COMPILER_ID} STREQUAL "GNU")
|
||||||
|
set(COMPILER_ID "GCC")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
string(TOUPPER ${ARCH} UC_ARCH)
|
||||||
|
|
||||||
|
file(WRITE ${TARGET_CONF_TEMP}
|
||||||
|
"#define OS_${HOST_OS}\t1\n"
|
||||||
|
"#define ARCH_${UC_ARCH}\t1\n"
|
||||||
|
"#define C_${COMPILER_ID}\t1\n"
|
||||||
|
"#define __${BINARY}BIT__\t1\n"
|
||||||
|
"#define FUNDERSCORE\t${FU}\n")
|
||||||
|
|
||||||
|
if (${HOST_OS} STREQUAL "WINDOWSSTORE")
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define OS_WINNT\t1\n")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# f_check
|
||||||
if (NOT NOFORTRAN)
|
if (NOT NOFORTRAN)
|
||||||
include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake")
|
include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# compile getarch
|
# Cannot run getarch on target if we are cross-compiling
|
||||||
set(GETARCH_SRC
|
if (DEFINED CORE AND CMAKE_CROSSCOMPILING)
|
||||||
${PROJECT_SOURCE_DIR}/getarch.c
|
# Write to config as getarch would
|
||||||
${CPUIDEMO}
|
|
||||||
)
|
|
||||||
|
|
||||||
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
# TODO: Set up defines that getarch sets up based on every other target
|
||||||
|
# Perhaps this should be inside a different file as it grows larger
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define ${CORE}\n"
|
||||||
|
"#define CHAR_CORENAME \"${CORE}\"\n")
|
||||||
|
if ("${CORE}" STREQUAL "ARMV7")
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define L1_DATA_SIZE\t65536\n"
|
||||||
|
"#define L1_DATA_LINESIZE\t32\n"
|
||||||
|
"#define L2_SIZE\t512488\n"
|
||||||
|
"#define L2_LINESIZE\t32\n"
|
||||||
|
"#define DTB_DEFAULT_ENTRIES\t64\n"
|
||||||
|
"#define DTB_SIZE\t4096\n"
|
||||||
|
"#define L2_ASSOCIATIVE\t4\n"
|
||||||
|
"#define HAVE_VFPV3\n"
|
||||||
|
"#define HAVE_VFP\n")
|
||||||
|
set(SGEMM_UNROLL_M 4)
|
||||||
|
set(SGEMM_UNROLL_N 4)
|
||||||
|
set(DGEMM_UNROLL_M 4)
|
||||||
|
set(DGEMM_UNROLL_N 4)
|
||||||
|
elseif ("${CORE}" STREQUAL "ARMV8")
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define L1_DATA_SIZE\t32768\n"
|
||||||
|
"#define L1_DATA_LINESIZE\t64\n"
|
||||||
|
"#define L2_SIZE\t262144\n"
|
||||||
|
"#define L2_LINESIZE\t64\n"
|
||||||
|
"#define DTB_DEFAULT_ENTRIES\t64\n"
|
||||||
|
"#define DTB_SIZE\t4096\n"
|
||||||
|
"#define L2_ASSOCIATIVE\t32\n")
|
||||||
|
set(SGEMM_UNROLL_M 4)
|
||||||
|
set(SGEMM_UNROLL_N 4)
|
||||||
|
elseif ("${CORE}" STREQUAL "CORTEXA57")
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define L1_CODE_SIZE\t49152\n"
|
||||||
|
"#define L1_CODE_LINESIZE\t64\n"
|
||||||
|
"#define L1_CODE_ASSOCIATIVE\t3\n"
|
||||||
|
"#define L1_DATA_SIZE\t32768\n"
|
||||||
|
"#define L1_DATA_LINESIZE\t64\n"
|
||||||
|
"#define L1_DATA_ASSOCIATIVE\t2\n"
|
||||||
|
"#define L2_SIZE\t2097152\n"
|
||||||
|
"#define L2_LINESIZE\t64\n"
|
||||||
|
"#define L2_ASSOCIATIVE\t16\n"
|
||||||
|
"#define DTB_DEFAULT_ENTRIES\t64\n"
|
||||||
|
"#define DTB_SIZE\t4096\n"
|
||||||
|
"#define HAVE_VFPV4\n"
|
||||||
|
"#define HAVE_VFPV3\n"
|
||||||
|
"#define HAVE_VFP\n"
|
||||||
|
"#define HAVE_NEON\n")
|
||||||
|
set(SGEMM_UNROLL_M 16)
|
||||||
|
set(SGEMM_UNROLL_N 4)
|
||||||
|
set(DGEMM_UNROLL_M 8)
|
||||||
|
set(DGEMM_UNROLL_N 4)
|
||||||
|
set(CGEMM_UNROLL_M 8)
|
||||||
|
set(CGEMM_UNROLL_N 4)
|
||||||
|
set(ZGEMM_UNROLL_M 8)
|
||||||
|
set(ZGEMM_UNROLL_N 4)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Or should this actually be NUM_CORES?
|
||||||
|
if (${NUM_THREADS} GREATER 0)
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP} "#define NUM_CORES\t${NUM_THREADS}\n")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# GetArch_2nd
|
||||||
|
foreach(float_char S;D;Q;C;Z;X)
|
||||||
|
if (NOT DEFINED ${float_char}GEMM_UNROLL_M)
|
||||||
|
set(${float_char}GEMM_UNROLL_M 2)
|
||||||
|
endif()
|
||||||
|
if (NOT DEFINED ${float_char}GEMM_UNROLL_N)
|
||||||
|
set(${float_char}GEMM_UNROLL_N 2)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP}
|
||||||
|
"#define GEMM_MULTITHREAD_THRESHOLD\t${GEMM_MULTITHREAD_THRESHOLD}\n")
|
||||||
|
# Move to where gen_config_h would place it
|
||||||
|
file(RENAME ${TARGET_CONF_TEMP} "${TARGET_CONF_DIR}/${TARGET_CONF}")
|
||||||
|
|
||||||
|
else(NOT CMAKE_CROSSCOMPILING)
|
||||||
|
# compile getarch
|
||||||
|
set(GETARCH_SRC
|
||||||
|
${PROJECT_SOURCE_DIR}/getarch.c
|
||||||
|
${CPUIDEMU}
|
||||||
|
)
|
||||||
|
|
||||||
|
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
#Use generic for MSVC now
|
#Use generic for MSVC now
|
||||||
message("MSVC")
|
message("MSVC")
|
||||||
set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC)
|
set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC)
|
||||||
else()
|
else()
|
||||||
list(APPEND GETARCH_SRC ${PROJECT_SOURCE_DIR}/cpuid.S)
|
list(APPEND GETARCH_SRC ${PROJECT_SOURCE_DIR}/cpuid.S)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
# disable WindowsStore strict CRT checks
|
# disable WindowsStore strict CRT checks
|
||||||
set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS)
|
set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build")
|
set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build")
|
||||||
set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}")
|
set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}")
|
||||||
file(MAKE_DIRECTORY ${GETARCH_DIR})
|
file(MAKE_DIRECTORY ${GETARCH_DIR})
|
||||||
configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY)
|
configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY)
|
||||||
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
try_compile(GETARCH_RESULT ${GETARCH_DIR}
|
try_compile(GETARCH_RESULT ${GETARCH_DIR}
|
||||||
SOURCES ${GETARCH_SRC}
|
SOURCES ${GETARCH_SRC}
|
||||||
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR}
|
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I"${PROJECT_SOURCE_DIR}" -I"${PROJECT_BINARY_DIR}"
|
||||||
OUTPUT_VARIABLE GETARCH_LOG
|
OUTPUT_VARIABLE GETARCH_LOG
|
||||||
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN}
|
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN}
|
||||||
)
|
)
|
||||||
|
|
@ -94,27 +200,27 @@ if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
if (NOT ${GETARCH_RESULT})
|
if (NOT ${GETARCH_RESULT})
|
||||||
MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}")
|
MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
message(STATUS "Running getarch")
|
message(STATUS "Running getarch")
|
||||||
|
|
||||||
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
||||||
execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT)
|
execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT)
|
||||||
execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 1 OUTPUT_VARIABLE GETARCH_CONF_OUT)
|
execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 1 OUTPUT_VARIABLE GETARCH_CONF_OUT)
|
||||||
|
|
||||||
message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}")
|
message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}")
|
||||||
|
|
||||||
# append config data from getarch to the TARGET file and read in CMake vars
|
# append config data from getarch to the TARGET file and read in CMake vars
|
||||||
file(APPEND ${TARGET_CONF_TEMP} ${GETARCH_CONF_OUT})
|
file(APPEND ${TARGET_CONF_TEMP} ${GETARCH_CONF_OUT})
|
||||||
ParseGetArchVars(${GETARCH_MAKE_OUT})
|
ParseGetArchVars(${GETARCH_MAKE_OUT})
|
||||||
|
|
||||||
set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build")
|
set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build")
|
||||||
set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}")
|
set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}")
|
||||||
file(MAKE_DIRECTORY ${GETARCH2_DIR})
|
file(MAKE_DIRECTORY ${GETARCH2_DIR})
|
||||||
configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY)
|
configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY)
|
||||||
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
try_compile(GETARCH2_RESULT ${GETARCH2_DIR}
|
try_compile(GETARCH2_RESULT ${GETARCH2_DIR}
|
||||||
SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c
|
SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c
|
||||||
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR}
|
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I"${PROJECT_SOURCE_DIR}" -I"${PROJECT_BINARY_DIR}"
|
||||||
OUTPUT_VARIABLE GETARCH2_LOG
|
OUTPUT_VARIABLE GETARCH2_LOG
|
||||||
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN}
|
COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN}
|
||||||
)
|
)
|
||||||
|
|
@ -122,38 +228,17 @@ if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
||||||
if (NOT ${GETARCH2_RESULT})
|
if (NOT ${GETARCH2_RESULT})
|
||||||
MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}")
|
MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
|
||||||
|
|
||||||
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
|
||||||
execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT)
|
|
||||||
execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT)
|
|
||||||
|
|
||||||
# append config data from getarch_2nd to the TARGET file and read in CMake vars
|
|
||||||
file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT})
|
|
||||||
|
|
||||||
if (${BUILD_KERNEL})
|
|
||||||
configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}/${TARGET_CONF} COPYONLY)
|
|
||||||
else ()
|
|
||||||
configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/${TARGET_CONF} COPYONLY)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
ParseGetArchVars(${GETARCH2_MAKE_OUT})
|
|
||||||
|
|
||||||
# compile get_config_h
|
|
||||||
set(GEN_CONFIG_H_DIR "${PROJECT_BINARY_DIR}/genconfig_h_build")
|
|
||||||
set(GEN_CONFIG_H_BIN "gen_config_h${CMAKE_EXECUTABLE_SUFFIX}")
|
|
||||||
set(GEN_CONFIG_H_FLAGS "-DVERSION=\"${OpenBLAS_VERSION}\"")
|
|
||||||
file(MAKE_DIRECTORY ${GEN_CONFIG_H_DIR})
|
|
||||||
|
|
||||||
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
|
||||||
try_compile(GEN_CONFIG_H_RESULT ${GEN_CONFIG_H_DIR}
|
|
||||||
SOURCES ${PROJECT_SOURCE_DIR}/gen_config_h.c
|
|
||||||
COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GEN_CONFIG_H_FLAGS} -I${PROJECT_SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE GEN_CONFIG_H_LOG
|
|
||||||
COPY_FILE ${PROJECT_BINARY_DIR}/${GEN_CONFIG_H_BIN}
|
|
||||||
)
|
|
||||||
|
|
||||||
if (NOT ${GEN_CONFIG_H_RESULT})
|
|
||||||
MESSAGE(FATAL_ERROR "Compiling gen_config_h failed ${GEN_CONFIG_H_LOG}")
|
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
|
||||||
|
# use the cmake binary w/ the -E param to run a shell command in a cross-platform way
|
||||||
|
execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT)
|
||||||
|
execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT)
|
||||||
|
|
||||||
|
# append config data from getarch_2nd to the TARGET file and read in CMake vars
|
||||||
|
file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT})
|
||||||
|
|
||||||
|
configure_file(${TARGET_CONF_TEMP} ${TARGET_CONF_DIR}/${TARGET_CONF} COPYONLY)
|
||||||
|
|
||||||
|
ParseGetArchVars(${GETARCH2_MAKE_OUT})
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,25 @@
|
||||||
##
|
##
|
||||||
set(NETLIB_LAPACK_DIR "${PROJECT_SOURCE_DIR}/lapack-netlib")
|
set(NETLIB_LAPACK_DIR "${PROJECT_SOURCE_DIR}/lapack-netlib")
|
||||||
|
|
||||||
# TODO: Makefile.system detects Darwin (mac) and switches to clang here -hpa
|
# System detection, via CMake.
|
||||||
# http://stackoverflow.com/questions/714100/os-detecting-makefile
|
include("${PROJECT_SOURCE_DIR}/cmake/system_check.cmake")
|
||||||
|
|
||||||
# TODO: Makefile.system sets HOSTCC = $(CC) here if not already set -hpa
|
if(CMAKE_CROSSCOMPILING AND NOT DEFINED TARGET)
|
||||||
|
# Detect target without running getarch
|
||||||
|
if (ARM64)
|
||||||
|
set(TARGET "ARMV8")
|
||||||
|
elseif(ARM)
|
||||||
|
set(TARGET "ARMV7") # TODO: Ask compiler which arch this is
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "When cross compiling, a TARGET is required.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Other files expect CORE, which is actually TARGET and will become TARGET_CORE for kernel build. Confused yet?
|
||||||
|
# It seems we are meant to use TARGET as input and CORE internally as kernel.
|
||||||
|
if(NOT DEFINED CORE AND DEFINED TARGET)
|
||||||
|
set(CORE ${TARGET})
|
||||||
|
endif()
|
||||||
|
|
||||||
# TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
|
# TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
|
||||||
if (DEFINED TARGET_CORE)
|
if (DEFINED TARGET_CORE)
|
||||||
|
|
@ -27,7 +42,7 @@ if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (DEFINED TARGET)
|
if (DEFINED TARGET)
|
||||||
message(STATUS "Targetting the ${TARGET} architecture.")
|
message(STATUS "Targeting the ${TARGET} architecture.")
|
||||||
set(GETARCH_FLAGS "-DFORCE_${TARGET}")
|
set(GETARCH_FLAGS "-DFORCE_${TARGET}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
@ -52,21 +67,16 @@ if (NO_AVX2)
|
||||||
set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX2")
|
set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX2")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL Debug)
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set(GETARCH_FLAGS "${GETARCH_FLAGS} -g")
|
set(GETARCH_FLAGS "${GETARCH_FLAGS} ${CMAKE_C_FLAGS_DEBUG}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# TODO: let CMake handle this? -hpa
|
|
||||||
#if (${QUIET_MAKE})
|
|
||||||
# set(MAKE "${MAKE} -s")
|
|
||||||
#endif()
|
|
||||||
|
|
||||||
if (NOT DEFINED NO_PARALLEL_MAKE)
|
if (NOT DEFINED NO_PARALLEL_MAKE)
|
||||||
set(NO_PARALLEL_MAKE 0)
|
set(NO_PARALLEL_MAKE 0)
|
||||||
endif ()
|
endif ()
|
||||||
set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_PARALLEL_MAKE=${NO_PARALLEL_MAKE}")
|
set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_PARALLEL_MAKE=${NO_PARALLEL_MAKE}")
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER STREQUAL loongcc)
|
if (CMAKE_C_COMPILER STREQUAL loongcc)
|
||||||
set(GETARCH_FLAGS "${GETARCH_FLAGS} -static")
|
set(GETARCH_FLAGS "${GETARCH_FLAGS} -static")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
@ -77,51 +87,40 @@ else ()
|
||||||
set(ONLY_CBLAS 0)
|
set(ONLY_CBLAS 0)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake")
|
# N.B. this is NUM_THREAD in Makefile.system which is probably a bug -hpa
|
||||||
|
if (NOT CMAKE_CROSSCOMPILING)
|
||||||
|
if (NOT DEFINED NUM_CORES)
|
||||||
|
include(ProcessorCount)
|
||||||
|
ProcessorCount(NUM_CORES)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED NUM_THREADS)
|
if (NOT DEFINED NUM_THREADS)
|
||||||
|
if (NOT NUM_CORES EQUAL 0)
|
||||||
|
# HT?
|
||||||
set(NUM_THREADS ${NUM_CORES})
|
set(NUM_THREADS ${NUM_CORES})
|
||||||
endif ()
|
else ()
|
||||||
|
set(NUM_THREADS 0)
|
||||||
|
endif ()
|
||||||
|
endif()
|
||||||
|
|
||||||
if (${NUM_THREADS} EQUAL 1)
|
if (${NUM_THREADS} LESS 2)
|
||||||
set(USE_THREAD 0)
|
set(USE_THREAD 0)
|
||||||
|
elseif(NOT DEFINED USE_THREAD)
|
||||||
|
set(USE_THREAD 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (DEFINED USE_THREAD)
|
if (USE_THREAD)
|
||||||
if (NOT ${USE_THREAD})
|
message(STATUS "Multi-threading enabled with ${NUM_THREADS} threads.")
|
||||||
unset(SMP)
|
|
||||||
else ()
|
|
||||||
set(SMP 1)
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
# N.B. this is NUM_THREAD in Makefile.system which is probably a bug -hpa
|
|
||||||
if (${NUM_THREADS} EQUAL 1)
|
|
||||||
unset(SMP)
|
|
||||||
else ()
|
|
||||||
set(SMP 1)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${SMP})
|
include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake")
|
||||||
message(STATUS "SMP enabled.")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (NOT DEFINED NEED_PIC)
|
if (NOT DEFINED NEED_PIC)
|
||||||
set(NEED_PIC 1)
|
set(NEED_PIC 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# TODO: I think CMake should be handling all this stuff -hpa
|
|
||||||
unset(ARFLAGS)
|
|
||||||
set(CPP "${COMPILER} -E")
|
|
||||||
set(AR "${CROSS_SUFFIX}ar")
|
|
||||||
set(AS "${CROSS_SUFFIX}as")
|
|
||||||
set(LD "${CROSS_SUFFIX}ld")
|
|
||||||
set(RANLIB "${CROSS_SUFFIX}ranlib")
|
|
||||||
set(NM "${CROSS_SUFFIX}nm")
|
|
||||||
set(DLLWRAP "${CROSS_SUFFIX}dllwrap")
|
|
||||||
set(OBJCOPY "${CROSS_SUFFIX}objcopy")
|
|
||||||
set(OBJCONV "${CROSS_SUFFIX}objconv")
|
|
||||||
|
|
||||||
# OS dependent settings
|
# OS dependent settings
|
||||||
include("${PROJECT_SOURCE_DIR}/cmake/os.cmake")
|
include("${PROJECT_SOURCE_DIR}/cmake/os.cmake")
|
||||||
|
|
||||||
|
|
@ -149,11 +148,13 @@ if (NEED_PIC)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (NOT NOFORTRAN)
|
||||||
if (${F_COMPILER} STREQUAL "SUN")
|
if (${F_COMPILER} STREQUAL "SUN")
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -pic")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -pic")
|
||||||
else ()
|
else ()
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC")
|
||||||
endif ()
|
endif ()
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (DYNAMIC_ARCH)
|
if (DYNAMIC_ARCH)
|
||||||
|
|
@ -174,7 +175,7 @@ if (NO_AVX)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "x86")
|
if (X86)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
@ -182,25 +183,20 @@ if (NO_AVX2)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX2")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX2")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
|
# USE_SIMPLE_THREADED_LEVEL3 = 1
|
||||||
|
# NO_AFFINITY = 1
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER")
|
||||||
|
|
||||||
if (${ARCH} STREQUAL "mips64")
|
if (MIPS64)
|
||||||
if (NOT ${CORE} STREQUAL "LOONGSON3B")
|
if (NOT ${CORE} STREQUAL "LOONGSON3B")
|
||||||
set(USE_SIMPLE_THREADED_LEVEL3 1)
|
set(USE_SIMPLE_THREADED_LEVEL3 1)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (USE_OPENMP)
|
|
||||||
# USE_SIMPLE_THREADED_LEVEL3 = 1
|
|
||||||
# NO_AFFINITY = 1
|
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_OPENMP")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (BIGNUMA)
|
if (BIGNUMA)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NO_WARMUP)
|
if (NO_WARMUP)
|
||||||
|
|
@ -263,7 +259,7 @@ if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||||
set(NO_AFFINITY 1)
|
set(NO_AFFINITY 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT ${ARCH} STREQUAL "x86_64" AND NOT ${ARCH} STREQUAL "x86" AND NOT ${CORE} STREQUAL "LOONGSON3B")
|
if (NOT X86_64 AND NOT X86 AND NOT ${CORE} STREQUAL "LOONGSON3B")
|
||||||
set(NO_AFFINITY 1)
|
set(NO_AFFINITY 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
@ -295,52 +291,19 @@ if (MIXED_MEMORY_ALLOCATION)
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
|
|
||||||
set(TAR gtar)
|
|
||||||
set(PATCH gpatch)
|
|
||||||
set(GREP ggrep)
|
|
||||||
else ()
|
|
||||||
set(TAR tar)
|
|
||||||
set(PATCH patch)
|
|
||||||
set(GREP grep)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (NOT DEFINED MD5SUM)
|
|
||||||
set(MD5SUM md5sum)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set(AWK awk)
|
|
||||||
|
|
||||||
set(SED sed)
|
|
||||||
|
|
||||||
set(REVISION "-r${OpenBLAS_VERSION}")
|
set(REVISION "-r${OpenBLAS_VERSION}")
|
||||||
set(MAJOR_VERSION ${OpenBLAS_MAJOR_VERSION})
|
set(MAJOR_VERSION ${OpenBLAS_MAJOR_VERSION})
|
||||||
|
|
||||||
if (DEBUG)
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CCOMMON_OPT}")
|
||||||
set(COMMON_OPT "${COMMON_OPT} -g")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (NOT DEFINED COMMON_OPT)
|
|
||||||
set(COMMON_OPT "-O2")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
#For x86 32-bit
|
|
||||||
if (DEFINED BINARY AND BINARY EQUAL 32)
|
|
||||||
if (NOT MSVC)
|
|
||||||
set(COMMON_OPT "${COMMON_OPT} -m32")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}")
|
|
||||||
if(NOT MSVC)
|
if(NOT MSVC)
|
||||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}")
|
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CCOMMON_OPT}")
|
||||||
endif()
|
endif()
|
||||||
# TODO: not sure what PFLAGS is -hpa
|
# TODO: not sure what PFLAGS is -hpa
|
||||||
set(PFLAGS "${PFLAGS} ${COMMON_OPT} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}")
|
set(PFLAGS "${PFLAGS} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}")
|
||||||
|
|
||||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${COMMON_OPT} ${FCOMMON_OPT}")
|
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${FCOMMON_OPT}")
|
||||||
# TODO: not sure what FPFLAGS is -hpa
|
# TODO: not sure what FPFLAGS is -hpa
|
||||||
set(FPFLAGS "${FPFLAGS} ${COMMON_OPT} ${FCOMMON_OPT} ${COMMON_PROF}")
|
set(FPFLAGS "${FPFLAGS} ${FCOMMON_OPT} ${COMMON_PROF}")
|
||||||
|
|
||||||
#For LAPACK Fortran codes.
|
#For LAPACK Fortran codes.
|
||||||
set(LAPACK_FFLAGS "${LAPACK_FFLAGS} ${CMAKE_Fortran_FLAGS}")
|
set(LAPACK_FFLAGS "${LAPACK_FFLAGS} ${CMAKE_Fortran_FLAGS}")
|
||||||
|
|
@ -348,7 +311,7 @@ set(LAPACK_FPFLAGS "${LAPACK_FPFLAGS} ${FPFLAGS}")
|
||||||
|
|
||||||
#Disable -fopenmp for LAPACK Fortran codes on Windows.
|
#Disable -fopenmp for LAPACK Fortran codes on Windows.
|
||||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parralel")
|
set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parallel")
|
||||||
foreach (FILTER_FLAG ${FILTER_FLAGS})
|
foreach (FILTER_FLAG ${FILTER_FLAGS})
|
||||||
string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
|
string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
|
||||||
string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})
|
string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})
|
||||||
|
|
@ -386,7 +349,7 @@ if (NOT DEFINED LIBSUFFIX)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (DYNAMIC_ARCH)
|
if (DYNAMIC_ARCH)
|
||||||
if (DEFINED SMP)
|
if (USE_THREAD)
|
||||||
set(LIBNAME "${LIBPREFIX}p${REVISION}.${LIBSUFFIX}")
|
set(LIBNAME "${LIBPREFIX}p${REVISION}.${LIBSUFFIX}")
|
||||||
set(LIBNAME_P "${LIBPREFIX}p${REVISION}_p.${LIBSUFFIX}")
|
set(LIBNAME_P "${LIBPREFIX}p${REVISION}_p.${LIBSUFFIX}")
|
||||||
else ()
|
else ()
|
||||||
|
|
@ -394,7 +357,7 @@ if (DYNAMIC_ARCH)
|
||||||
set(LIBNAME_P "${LIBPREFIX}${REVISION}_p.${LIBSUFFIX}")
|
set(LIBNAME_P "${LIBPREFIX}${REVISION}_p.${LIBSUFFIX}")
|
||||||
endif ()
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
if (DEFINED SMP)
|
if (USE_THREAD)
|
||||||
set(LIBNAME "${LIBPREFIX}_${LIBCORE}p${REVISION}.${LIBSUFFIX}")
|
set(LIBNAME "${LIBPREFIX}_${LIBCORE}p${REVISION}.${LIBSUFFIX}")
|
||||||
set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}p${REVISION}_p.${LIBSUFFIX}")
|
set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}p${REVISION}_p.${LIBSUFFIX}")
|
||||||
else ()
|
else ()
|
||||||
|
|
@ -425,6 +388,9 @@ if (NOT NO_LAPACK)
|
||||||
if (NOT NO_LAPACKE)
|
if (NOT NO_LAPACKE)
|
||||||
set(LIB_COMPONENTS "${LIB_COMPONENTS} LAPACKE")
|
set(LIB_COMPONENTS "${LIB_COMPONENTS} LAPACKE")
|
||||||
endif ()
|
endif ()
|
||||||
|
if (BUILD_RELAPACK)
|
||||||
|
set(LIB_COMPONENTS "${LIB_COMPONENTS} ReLAPACK")
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (ONLY_CBLAS)
|
if (ONLY_CBLAS)
|
||||||
|
|
@ -436,7 +402,7 @@ endif ()
|
||||||
set(USE_GEMM3M 0)
|
set(USE_GEMM3M 0)
|
||||||
|
|
||||||
if (DEFINED ARCH)
|
if (DEFINED ARCH)
|
||||||
if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64" OR ${ARCH} STREQUAL "ia64" OR ${ARCH} STREQUAL "MIPS")
|
if (X86 OR X86_64 OR ${ARCH} STREQUAL "ia64" OR MIPS64)
|
||||||
set(USE_GEMM3M 1)
|
set(USE_GEMM3M 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
@ -519,35 +485,3 @@ endif ()
|
||||||
# export CUFLAGS
|
# export CUFLAGS
|
||||||
# export CULIB
|
# export CULIB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#.SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
|
|
||||||
#
|
|
||||||
#.f.$(SUFFIX):
|
|
||||||
# $(FC) $(FFLAGS) -c $< -o $(@F)
|
|
||||||
#
|
|
||||||
#.f.$(PSUFFIX):
|
|
||||||
# $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
|
|
||||||
|
|
||||||
# these are not cross-platform
|
|
||||||
#ifdef BINARY64
|
|
||||||
#PATHSCALEPATH = /opt/pathscale/lib/3.1
|
|
||||||
#PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
|
|
||||||
#else
|
|
||||||
#PATHSCALEPATH = /opt/pathscale/lib/3.1/32
|
|
||||||
#PGIPATH = /opt/pgi/linux86/7.1-5/lib
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ACMLPATH = /opt/acml/4.3.0
|
|
||||||
#ifneq ($(OSNAME), Darwin)
|
|
||||||
#MKLPATH = /opt/intel/mkl/10.2.2.025/lib
|
|
||||||
#else
|
|
||||||
#MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
|
|
||||||
#endif
|
|
||||||
#ATLASPATH = /opt/atlas/3.9.17/opteron
|
|
||||||
#FLAMEPATH = $(HOME)/flame/lib
|
|
||||||
#ifneq ($(OSNAME), SunOS)
|
|
||||||
#SUNPATH = /opt/sunstudio12.1
|
|
||||||
#else
|
|
||||||
#SUNPATH = /opt/SUNWspro
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
##
|
||||||
|
## Author: Hank Anderson <hank@statease.com>
|
||||||
|
## Description: Ported from the OpenBLAS/c_check perl script.
|
||||||
|
## This is triggered by prebuild.cmake and runs before any of the code is built.
|
||||||
|
## Creates config.h and Makefile.conf.
|
||||||
|
|
||||||
|
# Convert CMake vars into the format that OpenBLAS expects
|
||||||
|
string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS)
|
||||||
|
if (${HOST_OS} STREQUAL "WINDOWS")
|
||||||
|
set(HOST_OS WINNT)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCC AND WIN32)
|
||||||
|
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine
|
||||||
|
OUTPUT_VARIABLE OPENBLAS_GCC_TARGET_MACHINE
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
if(OPENBLAS_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64")
|
||||||
|
set(MINGW64 1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Pretty thorough determination of arch. Add more if needed
|
||||||
|
if(CMAKE_CL_64 OR MINGW64)
|
||||||
|
set(X86_64 1)
|
||||||
|
elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING))
|
||||||
|
set(X86 1)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc.*|power.*|Power.*")
|
||||||
|
set(PPC 1)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64.*")
|
||||||
|
set(MIPS64 1)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
|
||||||
|
set(X86_64 1)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*")
|
||||||
|
set(X86 1)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)")
|
||||||
|
set(ARM 1)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)")
|
||||||
|
set(ARM64 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (X86_64)
|
||||||
|
set(ARCH "x86_64")
|
||||||
|
elseif(X86)
|
||||||
|
set(ARCH "x86")
|
||||||
|
elseif(PPC)
|
||||||
|
set(ARCH "power")
|
||||||
|
elseif(ARM)
|
||||||
|
set(ARCH "arm")
|
||||||
|
elseif(ARM64)
|
||||||
|
set(ARCH "arm64")
|
||||||
|
else()
|
||||||
|
set(ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Target Architecture")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (NOT BINARY)
|
||||||
|
if (X86_64 OR ARM64 OR PPC OR MIPS64)
|
||||||
|
set(BINARY 64)
|
||||||
|
else ()
|
||||||
|
set(BINARY 32)
|
||||||
|
endif ()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BINARY EQUAL 64)
|
||||||
|
set(BINARY64 1)
|
||||||
|
else()
|
||||||
|
set(BINARY32 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
@ -888,7 +888,7 @@ BLASLONG (*ixamin_k)(BLASLONG, xdouble *, BLASLONG);
|
||||||
int (*sgeadd_k) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG);
|
int (*sgeadd_k) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG);
|
||||||
int (*dgeadd_k) (BLASLONG, BLASLONG, double, double *, BLASLONG, double, double *, BLASLONG);
|
int (*dgeadd_k) (BLASLONG, BLASLONG, double, double *, BLASLONG, double, double *, BLASLONG);
|
||||||
int (*cgeadd_k) (BLASLONG, BLASLONG, float, float, float *, BLASLONG, float, float, float *, BLASLONG);
|
int (*cgeadd_k) (BLASLONG, BLASLONG, float, float, float *, BLASLONG, float, float, float *, BLASLONG);
|
||||||
int (*zgeadd_k) (BLASLONG, BLASLONG, float, double, double *, BLASLONG, double, double, double *, BLASLONG);
|
int (*zgeadd_k) (BLASLONG, BLASLONG, double, double, double *, BLASLONG, double, double, double *, BLASLONG);
|
||||||
|
|
||||||
} gotoblas_t;
|
} gotoblas_t;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define CPU_LOONGSON3B 3
|
#define CPU_LOONGSON3B 3
|
||||||
#define CPU_I6400 4
|
#define CPU_I6400 4
|
||||||
#define CPU_P6600 5
|
#define CPU_P6600 5
|
||||||
|
#define CPU_I6500 6
|
||||||
|
|
||||||
static char *cpuname[] = {
|
static char *cpuname[] = {
|
||||||
"UNKOWN",
|
"UNKOWN",
|
||||||
|
|
@ -83,7 +84,8 @@ static char *cpuname[] = {
|
||||||
"LOONGSON3A",
|
"LOONGSON3A",
|
||||||
"LOONGSON3B",
|
"LOONGSON3B",
|
||||||
"I6400",
|
"I6400",
|
||||||
"P6600"
|
"P6600",
|
||||||
|
"I6500"
|
||||||
};
|
};
|
||||||
|
|
||||||
int detect(void){
|
int detect(void){
|
||||||
|
|
@ -165,6 +167,8 @@ void get_subarchitecture(void){
|
||||||
printf("I6400");
|
printf("I6400");
|
||||||
}else if(detect()==CPU_P6600){
|
}else if(detect()==CPU_P6600){
|
||||||
printf("P6600");
|
printf("P6600");
|
||||||
|
}else if(detect()==CPU_I6500){
|
||||||
|
printf("I6500");
|
||||||
}else{
|
}else{
|
||||||
printf("SICORTEX");
|
printf("SICORTEX");
|
||||||
}
|
}
|
||||||
|
|
@ -211,6 +215,15 @@ void get_cpuconfig(void){
|
||||||
printf("#define DTB_DEFAULT_ENTRIES 64\n");
|
printf("#define DTB_DEFAULT_ENTRIES 64\n");
|
||||||
printf("#define DTB_SIZE 4096\n");
|
printf("#define DTB_SIZE 4096\n");
|
||||||
printf("#define L2_ASSOCIATIVE 8\n");
|
printf("#define L2_ASSOCIATIVE 8\n");
|
||||||
|
}else if(detect()==CPU_I6500){
|
||||||
|
printf("#define I6500\n");
|
||||||
|
printf("#define L1_DATA_SIZE 65536\n");
|
||||||
|
printf("#define L1_DATA_LINESIZE 32\n");
|
||||||
|
printf("#define L2_SIZE 1048576\n");
|
||||||
|
printf("#define L2_LINESIZE 32\n");
|
||||||
|
printf("#define DTB_DEFAULT_ENTRIES 64\n");
|
||||||
|
printf("#define DTB_SIZE 4096\n");
|
||||||
|
printf("#define L2_ASSOCIATIVE 8\n");
|
||||||
}else{
|
}else{
|
||||||
printf("#define SICORTEX\n");
|
printf("#define SICORTEX\n");
|
||||||
printf("#define L1_DATA_SIZE 32768\n");
|
printf("#define L1_DATA_SIZE 32768\n");
|
||||||
|
|
@ -232,6 +245,8 @@ void get_libname(void){
|
||||||
printf("i6400\n");
|
printf("i6400\n");
|
||||||
}else if(detect()==CPU_P6600) {
|
}else if(detect()==CPU_P6600) {
|
||||||
printf("p6600\n");
|
printf("p6600\n");
|
||||||
|
}else if(detect()==CPU_I6500) {
|
||||||
|
printf("i6500\n");
|
||||||
}else{
|
}else{
|
||||||
printf("mips64\n");
|
printf("mips64\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ void get_subdirname(void){
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_cpuconfig(void){
|
void get_cpuconfig(void){
|
||||||
|
printf("#define SPARC\n");
|
||||||
printf("#define V9\n");
|
printf("#define V9\n");
|
||||||
printf("#define DTB_DEFAULT_ENTRIES 32\n");
|
printf("#define DTB_DEFAULT_ENTRIES 32\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ foreach(float_type ${FLOAT_TYPES})
|
||||||
add_executable(x${float_char}cblat1
|
add_executable(x${float_char}cblat1
|
||||||
c_${float_char}blat1.f
|
c_${float_char}blat1.f
|
||||||
c_${float_char}blas1.c)
|
c_${float_char}blas1.c)
|
||||||
target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME}_static)
|
target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME})
|
||||||
add_test(NAME "x${float_char}cblat1"
|
add_test(NAME "x${float_char}cblat1"
|
||||||
COMMAND "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat1")
|
COMMAND "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat1")
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ foreach(float_type ${FLOAT_TYPES})
|
||||||
auxiliary.c
|
auxiliary.c
|
||||||
c_xerbla.c
|
c_xerbla.c
|
||||||
constant.c)
|
constant.c)
|
||||||
target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME}_static)
|
target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME})
|
||||||
add_test(NAME "x${float_char}cblat2"
|
add_test(NAME "x${float_char}cblat2"
|
||||||
COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat2" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in2")
|
COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat2" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in2")
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@ foreach(float_type ${FLOAT_TYPES})
|
||||||
auxiliary.c
|
auxiliary.c
|
||||||
c_xerbla.c
|
c_xerbla.c
|
||||||
constant.c)
|
constant.c)
|
||||||
target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME}_static)
|
target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME})
|
||||||
add_test(NAME "x${float_char}cblat3"
|
add_test(NAME "x${float_char}cblat3"
|
||||||
COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat3" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in3")
|
COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat3" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in3")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "cblas_test.h"
|
#include "cblas_test.h"
|
||||||
|
|
||||||
void F77_caxpy(const int *N, const void *alpha, void *X,
|
void F77_caxpy(const int *N, OPENBLAS_CONST void *alpha, void *X,
|
||||||
const int *incX, void *Y, const int *incY)
|
const int *incX, void *Y, const int *incY)
|
||||||
{
|
{
|
||||||
cblas_caxpy(*N, alpha, X, *incX, Y, *incY);
|
cblas_caxpy(*N, alpha, X, *incX, Y, *incY);
|
||||||
|
|
@ -58,13 +58,13 @@ void F77_cswap( const int *N, void *X, const int *incX,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int F77_icamax(const int *N, const void *X, const int *incX)
|
int F77_icamax(const int *N, OPENBLAS_CONST void *X, const int *incX)
|
||||||
{
|
{
|
||||||
if (*N < 1 || *incX < 1) return(0);
|
if (*N < 1 || *incX < 1) return(0);
|
||||||
return (cblas_icamax(*N, X, *incX)+1);
|
return (cblas_icamax(*N, X, *incX)+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
float F77_scnrm2(const int *N, const void *X, const int *incX)
|
float F77_scnrm2(const int *N, OPENBLAS_CONST void *X, const int *incX)
|
||||||
{
|
{
|
||||||
return cblas_scnrm2(*N, X, *incX);
|
return cblas_scnrm2(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@
|
||||||
#include "cblas_test.h"
|
#include "cblas_test.h"
|
||||||
|
|
||||||
void F77_cgemv(int *order, char *transp, int *m, int *n,
|
void F77_cgemv(int *order, char *transp, int *m, int *n,
|
||||||
const void *alpha,
|
OPENBLAS_CONST void *alpha,
|
||||||
CBLAS_TEST_COMPLEX *a, int *lda, const void *x, int *incx,
|
CBLAS_TEST_COMPLEX *a, int *lda, OPENBLAS_CONST void *x, int *incx,
|
||||||
const void *beta, void *y, int *incy) {
|
OPENBLAS_CONST void *beta, void *y, int *incy) {
|
||||||
|
|
||||||
CBLAS_TEST_COMPLEX *A;
|
CBLAS_TEST_COMPLEX *A;
|
||||||
int i,j,LDA;
|
int i,j,LDA;
|
||||||
|
|
|
||||||
|
|
@ -2660,7 +2660,7 @@
|
||||||
50 CONTINUE
|
50 CONTINUE
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
60 CONTINUE
|
C 60 CONTINUE
|
||||||
LCERES = .TRUE.
|
LCERES = .TRUE.
|
||||||
GO TO 80
|
GO TO 80
|
||||||
70 CONTINUE
|
70 CONTINUE
|
||||||
|
|
|
||||||
|
|
@ -707,9 +707,9 @@
|
||||||
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
||||||
$ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3,
|
C $ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3,
|
||||||
$ ',(', F4.1, ',', F4.1, '), C,', I3, ').' )
|
C $ ',(', F4.1, ',', F4.1, '), C,', I3, ').' )
|
||||||
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1033,9 +1033,9 @@
|
||||||
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
||||||
$ ',', F4.1, '), C,', I3, ') .' )
|
C $ ',', F4.1, '), C,', I3, ') .' )
|
||||||
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1385,9 +1385,9 @@
|
||||||
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ',
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1768,12 +1768,12 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ',
|
C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1,
|
C $ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1,
|
||||||
$ '), C,', I3, ') .' )
|
C $ '), C,', I3, ') .' )
|
||||||
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2221,12 +2221,12 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1,
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1,
|
||||||
$ ', C,', I3, ') .' )
|
C $ ', C,', I3, ') .' )
|
||||||
9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
||||||
$ ',', F4.1, '), C,', I3, ') .' )
|
C $ ',', F4.1, '), C,', I3, ') .' )
|
||||||
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2702,7 +2702,7 @@
|
||||||
50 CONTINUE
|
50 CONTINUE
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
60 CONTINUE
|
C 60 CONTINUE
|
||||||
LCERES = .TRUE.
|
LCERES = .TRUE.
|
||||||
GO TO 80
|
GO TO 80
|
||||||
70 CONTINUE
|
70 CONTINUE
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ double F77_dasum(const int *N, double *X, const int *incX)
|
||||||
return cblas_dasum(*N, X, *incX);
|
return cblas_dasum(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
||||||
void F77_daxpy(const int *N, const double *alpha, const double *X,
|
void F77_daxpy(const int *N, const double *alpha, OPENBLAS_CONST double *X,
|
||||||
const int *incX, double *Y, const int *incY)
|
const int *incX, double *Y, const int *incY)
|
||||||
{
|
{
|
||||||
cblas_daxpy(*N, *alpha, X, *incX, Y, *incY);
|
cblas_daxpy(*N, *alpha, X, *incX, Y, *incY);
|
||||||
|
|
@ -28,13 +28,13 @@ void F77_dcopy(const int *N, double *X, const int *incX,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
double F77_ddot(const int *N, const double *X, const int *incX,
|
double F77_ddot(const int *N, OPENBLAS_CONST double *X, const int *incX,
|
||||||
const double *Y, const int *incY)
|
OPENBLAS_CONST double *Y, const int *incY)
|
||||||
{
|
{
|
||||||
return cblas_ddot(*N, X, *incX, Y, *incY);
|
return cblas_ddot(*N, X, *incX, Y, *incY);
|
||||||
}
|
}
|
||||||
|
|
||||||
double F77_dnrm2(const int *N, const double *X, const int *incX)
|
double F77_dnrm2(const int *N, OPENBLAS_CONST double *X, const int *incX)
|
||||||
{
|
{
|
||||||
return cblas_dnrm2(*N, X, *incX);
|
return cblas_dnrm2(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
@ -72,12 +72,12 @@ double F77_dzasum(const int *N, void *X, const int *incX)
|
||||||
return cblas_dzasum(*N, X, *incX);
|
return cblas_dzasum(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
||||||
double F77_dznrm2(const int *N, const void *X, const int *incX)
|
double F77_dznrm2(const int *N, OPENBLAS_CONST void *X, const int *incX)
|
||||||
{
|
{
|
||||||
return cblas_dznrm2(*N, X, *incX);
|
return cblas_dznrm2(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
||||||
int F77_idamax(const int *N, const double *X, const int *incX)
|
int F77_idamax(const int *N, OPENBLAS_CONST double *X, const int *incX)
|
||||||
{
|
{
|
||||||
if (*N < 1 || *incX < 1) return(0);
|
if (*N < 1 || *incX < 1) return(0);
|
||||||
return (cblas_idamax(*N, X, *incX)+1);
|
return (cblas_idamax(*N, X, *incX)+1);
|
||||||
|
|
|
||||||
|
|
@ -211,11 +211,11 @@
|
||||||
IF (ICASE.EQ.7) THEN
|
IF (ICASE.EQ.7) THEN
|
||||||
* .. DNRM2TEST ..
|
* .. DNRM2TEST ..
|
||||||
STEMP(1) = DTRUE1(NP1)
|
STEMP(1) = DTRUE1(NP1)
|
||||||
CALL STEST1(DNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC)
|
CALL STEST1(DNRM2TEST(N,SX,INCX),STEMP(1),STEMP,SFAC)
|
||||||
ELSE IF (ICASE.EQ.8) THEN
|
ELSE IF (ICASE.EQ.8) THEN
|
||||||
* .. DASUMTEST ..
|
* .. DASUMTEST ..
|
||||||
STEMP(1) = DTRUE3(NP1)
|
STEMP(1) = DTRUE3(NP1)
|
||||||
CALL STEST1(DASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC)
|
CALL STEST1(DASUMTEST(N,SX,INCX),STEMP(1),STEMP,SFAC)
|
||||||
ELSE IF (ICASE.EQ.9) THEN
|
ELSE IF (ICASE.EQ.9) THEN
|
||||||
* .. DSCALTEST ..
|
* .. DSCALTEST ..
|
||||||
CALL DSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX)
|
CALL DSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX)
|
||||||
|
|
|
||||||
|
|
@ -797,9 +797,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1,
|
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1,
|
||||||
$ ', A,', I3, ',',/ 10x,'X,', I2, ',', F4.1, ', Y,',
|
$ ', A,', I3, ',',/ 10x,'X,', I2, ',', F4.1, ', Y,',
|
||||||
|
|
@ -1156,9 +1156,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP',
|
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP',
|
||||||
$ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' )
|
$ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' )
|
||||||
|
|
@ -1544,9 +1544,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ',
|
9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ',
|
||||||
$ 'X,', I2, ') .' )
|
$ 'X,', I2, ') .' )
|
||||||
|
|
@ -1819,9 +1819,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2,
|
9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2,
|
||||||
|
|
@ -2113,9 +2113,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
||||||
|
|
@ -2445,9 +2445,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
||||||
|
|
@ -2833,7 +2833,7 @@
|
||||||
50 CONTINUE
|
50 CONTINUE
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
60 CONTINUE
|
C 60 CONTINUE
|
||||||
LDERES = .TRUE.
|
LDERES = .TRUE.
|
||||||
GO TO 80
|
GO TO 80
|
||||||
70 CONTINUE
|
70 CONTINUE
|
||||||
|
|
|
||||||
|
|
@ -694,9 +694,9 @@
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
||||||
$ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ',
|
C $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ',
|
||||||
$ 'C,', I3, ').' )
|
C $ 'C,', I3, ').' )
|
||||||
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1007,9 +1007,9 @@
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1355,8 +1355,8 @@
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ', B,', I3, ') .' )
|
C $ F4.1, ', A,', I3, ', B,', I3, ') .' )
|
||||||
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1681,8 +1681,8 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' )
|
C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' )
|
||||||
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2037,9 +2037,9 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2399,7 +2399,7 @@
|
||||||
50 CONTINUE
|
50 CONTINUE
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
60 CONTINUE
|
C 60 CONTINUE
|
||||||
LDERES = .TRUE.
|
LDERES = .TRUE.
|
||||||
GO TO 80
|
GO TO 80
|
||||||
70 CONTINUE
|
70 CONTINUE
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ float F77_sasum(blasint *N, float *X, blasint *incX)
|
||||||
return cblas_sasum(*N, X, *incX);
|
return cblas_sasum(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
||||||
void F77_saxpy(blasint *N, const float *alpha, const float *X,
|
void F77_saxpy(blasint *N, const float *alpha, OPENBLAS_CONST float *X,
|
||||||
blasint *incX, float *Y, blasint *incY)
|
blasint *incX, float *Y, blasint *incY)
|
||||||
{
|
{
|
||||||
cblas_saxpy(*N, *alpha, X, *incX, Y, *incY);
|
cblas_saxpy(*N, *alpha, X, *incX, Y, *incY);
|
||||||
|
|
@ -26,25 +26,25 @@ float F77_scasum(blasint *N, float *X, blasint *incX)
|
||||||
return cblas_scasum(*N, X, *incX);
|
return cblas_scasum(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
||||||
float F77_scnrm2(blasint *N, const float *X, blasint *incX)
|
float F77_scnrm2(blasint *N, OPENBLAS_CONST float *X, blasint *incX)
|
||||||
{
|
{
|
||||||
return cblas_scnrm2(*N, X, *incX);
|
return cblas_scnrm2(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
||||||
void F77_scopy(blasint *N, const float *X, blasint *incX,
|
void F77_scopy(blasint *N, OPENBLAS_CONST float *X, blasint *incX,
|
||||||
float *Y, blasint *incY)
|
float *Y, blasint *incY)
|
||||||
{
|
{
|
||||||
cblas_scopy(*N, X, *incX, Y, *incY);
|
cblas_scopy(*N, X, *incX, Y, *incY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
float F77_sdot(blasint *N, const float *X, blasint *incX,
|
float F77_sdot(blasint *N, OPENBLAS_CONST float *X, blasint *incX,
|
||||||
const float *Y, blasint *incY)
|
OPENBLAS_CONST float *Y, blasint *incY)
|
||||||
{
|
{
|
||||||
return cblas_sdot(*N, X, *incX, Y, *incY);
|
return cblas_sdot(*N, X, *incX, Y, *incY);
|
||||||
}
|
}
|
||||||
|
|
||||||
float F77_snrm2(blasint *N, const float *X, blasint *incX)
|
float F77_snrm2(blasint *N, OPENBLAS_CONST float *X, blasint *incX)
|
||||||
{
|
{
|
||||||
return cblas_snrm2(*N, X, *incX);
|
return cblas_snrm2(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
@ -76,7 +76,7 @@ void F77_sswap( blasint *N, float *X, blasint *incX,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int F77_isamax(blasint *N, const float *X, blasint *incX)
|
int F77_isamax(blasint *N, OPENBLAS_CONST float *X, blasint *incX)
|
||||||
{
|
{
|
||||||
if (*N < 1 || *incX < 1) return(0);
|
if (*N < 1 || *incX < 1) return(0);
|
||||||
return (cblas_isamax(*N, X, *incX)+1);
|
return (cblas_isamax(*N, X, *incX)+1);
|
||||||
|
|
|
||||||
|
|
@ -211,11 +211,11 @@
|
||||||
IF (ICASE.EQ.7) THEN
|
IF (ICASE.EQ.7) THEN
|
||||||
* .. SNRM2TEST ..
|
* .. SNRM2TEST ..
|
||||||
STEMP(1) = DTRUE1(NP1)
|
STEMP(1) = DTRUE1(NP1)
|
||||||
CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC)
|
CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP(1),STEMP,SFAC)
|
||||||
ELSE IF (ICASE.EQ.8) THEN
|
ELSE IF (ICASE.EQ.8) THEN
|
||||||
* .. SASUMTEST ..
|
* .. SASUMTEST ..
|
||||||
STEMP(1) = DTRUE3(NP1)
|
STEMP(1) = DTRUE3(NP1)
|
||||||
CALL STEST1(SASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC)
|
CALL STEST1(SASUMTEST(N,SX,INCX),STEMP(1),STEMP,SFAC)
|
||||||
ELSE IF (ICASE.EQ.9) THEN
|
ELSE IF (ICASE.EQ.9) THEN
|
||||||
* .. SSCALTEST ..
|
* .. SSCALTEST ..
|
||||||
CALL SSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX)
|
CALL SSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX)
|
||||||
|
|
|
||||||
|
|
@ -797,9 +797,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1,
|
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1,
|
||||||
$ ', A,', I3, ',',/ 10x, 'X,', I2, ',', F4.1, ', Y,',
|
$ ', A,', I3, ',',/ 10x, 'X,', I2, ',', F4.1, ', Y,',
|
||||||
|
|
@ -1156,9 +1156,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP',
|
9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP',
|
||||||
$ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' )
|
$ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' )
|
||||||
|
|
@ -1544,9 +1544,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ',
|
9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ',
|
||||||
$ 'X,', I2, ') .' )
|
$ 'X,', I2, ') .' )
|
||||||
|
|
@ -1819,9 +1819,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2,
|
9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2,
|
||||||
|
|
@ -2113,9 +2113,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
||||||
|
|
@ -2445,9 +2445,9 @@
|
||||||
$ ' (', I6, ' CALL', 'S)' )
|
$ ' (', I6, ' CALL', 'S)' )
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C',
|
||||||
$ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2,
|
||||||
$ ' - SUSPECT *******' )
|
C $ ' - SUSPECT *******' )
|
||||||
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,',
|
||||||
|
|
@ -2833,7 +2833,7 @@
|
||||||
50 CONTINUE
|
50 CONTINUE
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
60 CONTINUE
|
C 60 CONTINUE
|
||||||
LSERES = .TRUE.
|
LSERES = .TRUE.
|
||||||
GO TO 80
|
GO TO 80
|
||||||
70 CONTINUE
|
70 CONTINUE
|
||||||
|
|
|
||||||
|
|
@ -694,9 +694,9 @@
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
||||||
$ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ',
|
C $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ',
|
||||||
$ 'C,', I3, ').' )
|
C $ 'C,', I3, ').' )
|
||||||
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1011,9 +1011,9 @@
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1359,8 +1359,8 @@
|
||||||
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ', B,', I3, ') .' )
|
C $ F4.1, ', A,', I3, ', B,', I3, ') .' )
|
||||||
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1686,8 +1686,8 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' )
|
C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' )
|
||||||
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2041,9 +2041,9 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2403,7 +2403,7 @@
|
||||||
50 CONTINUE
|
50 CONTINUE
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
60 CONTINUE
|
C 60 CONTINUE
|
||||||
LSERES = .TRUE.
|
LSERES = .TRUE.
|
||||||
GO TO 80
|
GO TO 80
|
||||||
70 CONTINUE
|
70 CONTINUE
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ void F77_xerbla(char *srname, void *vinfo)
|
||||||
int BLASFUNC(xerbla)(char *name, blasint *info, blasint length) {
|
int BLASFUNC(xerbla)(char *name, blasint *info, blasint length) {
|
||||||
|
|
||||||
F77_xerbla(name, info);
|
F77_xerbla(name, info);
|
||||||
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "cblas_test.h"
|
#include "cblas_test.h"
|
||||||
|
|
||||||
void F77_zaxpy(const int *N, const void *alpha, void *X,
|
void F77_zaxpy(const int *N, OPENBLAS_CONST void *alpha, void *X,
|
||||||
const int *incX, void *Y, const int *incY)
|
const int *incX, void *Y, const int *incY)
|
||||||
{
|
{
|
||||||
cblas_zaxpy(*N, alpha, X, *incX, Y, *incY);
|
cblas_zaxpy(*N, alpha, X, *incX, Y, *incY);
|
||||||
|
|
@ -23,8 +23,8 @@ void F77_zcopy(const int *N, void *X, const int *incX,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void F77_zdotc(const int *N, const void *X, const int *incX,
|
void F77_zdotc(const int *N, OPENBLAS_CONST void *X, const int *incX,
|
||||||
const void *Y, const int *incY,void *dotc)
|
OPENBLAS_CONST void *Y, const int *incY,void *dotc)
|
||||||
{
|
{
|
||||||
cblas_zdotc_sub(*N, X, *incX, Y, *incY, dotc);
|
cblas_zdotc_sub(*N, X, *incX, Y, *incY, dotc);
|
||||||
return;
|
return;
|
||||||
|
|
@ -58,13 +58,13 @@ void F77_zswap( const int *N, void *X, const int *incX,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int F77_izamax(const int *N, const void *X, const int *incX)
|
int F77_izamax(const int *N, OPENBLAS_CONST void *X, const int *incX)
|
||||||
{
|
{
|
||||||
if (*N < 1 || *incX < 1) return(0);
|
if (*N < 1 || *incX < 1) return(0);
|
||||||
return(cblas_izamax(*N, X, *incX)+1);
|
return(cblas_izamax(*N, X, *incX)+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
double F77_dznrm2(const int *N, const void *X, const int *incX)
|
double F77_dznrm2(const int *N, OPENBLAS_CONST void *X, const int *incX)
|
||||||
{
|
{
|
||||||
return cblas_dznrm2(*N, X, *incX);
|
return cblas_dznrm2(*N, X, *incX);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@
|
||||||
#include "cblas_test.h"
|
#include "cblas_test.h"
|
||||||
|
|
||||||
void F77_zgemv(int *order, char *transp, int *m, int *n,
|
void F77_zgemv(int *order, char *transp, int *m, int *n,
|
||||||
const void *alpha,
|
OPENBLAS_CONST void *alpha,
|
||||||
CBLAS_TEST_ZOMPLEX *a, int *lda, const void *x, int *incx,
|
CBLAS_TEST_ZOMPLEX *a, int *lda, OPENBLAS_CONST void *x, int *incx,
|
||||||
const void *beta, void *y, int *incy) {
|
OPENBLAS_CONST void *beta, void *y, int *incy) {
|
||||||
|
|
||||||
CBLAS_TEST_ZOMPLEX *A;
|
CBLAS_TEST_ZOMPLEX *A;
|
||||||
int i,j,LDA;
|
int i,j,LDA;
|
||||||
|
|
|
||||||
|
|
@ -708,9 +708,9 @@
|
||||||
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',',
|
||||||
$ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3,
|
C $ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3,
|
||||||
$ ',(', F4.1, ',', F4.1, '), C,', I3, ').' )
|
C $ ',(', F4.1, ',', F4.1, '), C,', I3, ').' )
|
||||||
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1034,9 +1034,9 @@
|
||||||
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
||||||
$ ',', F4.1, '), C,', I3, ') .' )
|
C $ ',', F4.1, '), C,', I3, ') .' )
|
||||||
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1386,9 +1386,9 @@
|
||||||
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH',
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ',
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -1769,12 +1769,12 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ',
|
C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ',
|
||||||
$ ' .' )
|
C $ ' .' )
|
||||||
9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1,
|
C $ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1,
|
||||||
$ '), C,', I3, ') .' )
|
C $ '), C,', I3, ') .' )
|
||||||
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2222,12 +2222,12 @@
|
||||||
$ 'ANGED INCORRECTLY *******' )
|
$ 'ANGED INCORRECTLY *******' )
|
||||||
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' )
|
||||||
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 )
|
||||||
9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1,
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1,
|
||||||
$ ', C,', I3, ') .' )
|
C $ ', C,', I3, ') .' )
|
||||||
9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ),
|
||||||
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1,
|
||||||
$ ',', F4.1, '), C,', I3, ') .' )
|
C $ ',', F4.1, '), C,', I3, ') .' )
|
||||||
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
|
||||||
$ '******' )
|
$ '******' )
|
||||||
*
|
*
|
||||||
|
|
@ -2706,7 +2706,7 @@
|
||||||
50 CONTINUE
|
50 CONTINUE
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
60 CONTINUE
|
C 60 CONTINUE
|
||||||
LZERES = .TRUE.
|
LZERES = .TRUE.
|
||||||
GO TO 80
|
GO TO 80
|
||||||
70 CONTINUE
|
70 CONTINUE
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ GenerateNamedObjects("zgbmv_k.c" "TRANS;CONJ;XCONJ" "gbmv_d" false "" "" "" 2)
|
||||||
# special defines for complex
|
# special defines for complex
|
||||||
foreach (float_type ${FLOAT_TYPES})
|
foreach (float_type ${FLOAT_TYPES})
|
||||||
|
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
GenerateNamedObjects("gemv_thread.c" "" "gemv_thread_n" false "" "" false ${float_type})
|
GenerateNamedObjects("gemv_thread.c" "" "gemv_thread_n" false "" "" false ${float_type})
|
||||||
GenerateNamedObjects("gemv_thread.c" "TRANSA" "gemv_thread_t" false "" "" false ${float_type})
|
GenerateNamedObjects("gemv_thread.c" "TRANSA" "gemv_thread_t" false "" "" false ${float_type})
|
||||||
|
|
||||||
|
|
@ -107,7 +107,7 @@ foreach (float_type ${FLOAT_TYPES})
|
||||||
GenerateNamedObjects("z${ulvm_source}" "LOWER;HEMVREV" "${op_name}_M" false "" "" false ${float_type})
|
GenerateNamedObjects("z${ulvm_source}" "LOWER;HEMVREV" "${op_name}_M" false "" "" false ${float_type})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
|
|
||||||
GenerateNamedObjects("gemv_thread.c" "CONJ" "gemv_thread_r" false "" "" false ${float_type})
|
GenerateNamedObjects("gemv_thread.c" "CONJ" "gemv_thread_r" false "" "" false ${float_type})
|
||||||
GenerateNamedObjects("gemv_thread.c" "CONJ;TRANSA" "gemv_thread_c" false "" "" false ${float_type})
|
GenerateNamedObjects("gemv_thread.c" "CONJ;TRANSA" "gemv_thread_c" false "" "" false ${float_type})
|
||||||
|
|
@ -186,7 +186,7 @@ foreach (float_type ${FLOAT_TYPES})
|
||||||
GenerateCombinationObjects("${l_source}" "UNIT" "N" "TRANSA" 0 "${op_name}_TU" false ${float_type})
|
GenerateCombinationObjects("${l_source}" "UNIT" "N" "TRANSA" 0 "${op_name}_TU" false ${float_type})
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
GenerateNamedObjects("ger_thread.c" "" "" false "" "" false ${float_type})
|
GenerateNamedObjects("ger_thread.c" "" "" false "" "" false ${float_type})
|
||||||
foreach(nu_smp_source ${NU_SMP_SOURCES})
|
foreach(nu_smp_source ${NU_SMP_SOURCES})
|
||||||
string(REGEX MATCH "[a-z]+_[a-z]+" op_name ${nu_smp_source})
|
string(REGEX MATCH "[a-z]+_[a-z]+" op_name ${nu_smp_source})
|
||||||
|
|
@ -197,7 +197,7 @@ foreach (float_type ${FLOAT_TYPES})
|
||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
GenerateCombinationObjects("${UL_SMP_SOURCES}" "LOWER" "U" "" 2)
|
GenerateCombinationObjects("${UL_SMP_SOURCES}" "LOWER" "U" "" 2)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,13 +62,13 @@ void CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT alpha,
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) + 4095) & ~4095);
|
||||||
gemvbuffer = bufferX;
|
// gemvbuffer = bufferX;
|
||||||
COPY_K(M, y, incy, Y, 1);
|
COPY_K(M, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) + 4095) & ~4095);
|
// gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) + 4095) & ~4095);
|
||||||
COPY_K(N, x, incx, X, 1);
|
COPY_K(N, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ static int gbmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F
|
||||||
COPY_K(args -> m, x, incx, buffer, 1);
|
COPY_K(args -> m, x, incx, buffer, 1);
|
||||||
|
|
||||||
x = buffer;
|
x = buffer;
|
||||||
buffer += ((COMPSIZE * args -> m + 1023) & ~1023);
|
// buffer += ((COMPSIZE * args -> m + 1023) & ~1023);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -230,10 +230,10 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT *alpha, FLOAT
|
||||||
|
|
||||||
#ifndef TRANSA
|
#ifndef TRANSA
|
||||||
range_m[num_cpu] = num_cpu * ((m + 15) & ~15);
|
range_m[num_cpu] = num_cpu * ((m + 15) & ~15);
|
||||||
if (range_m[num_cpu] > m) range_m[num_cpu] = m;
|
if (range_m[num_cpu] > m * num_cpu) range_m[num_cpu] = m * num_cpu;
|
||||||
#else
|
#else
|
||||||
range_m[num_cpu] = num_cpu * ((n + 15) & ~15);
|
range_m[num_cpu] = num_cpu * ((n + 15) & ~15);
|
||||||
if (range_m[num_cpu] > n) range_m[num_cpu] = n;
|
if (range_m[num_cpu] > n * num_cpu) range_m[num_cpu] = n * num_cpu;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
|
|
|
||||||
|
|
@ -55,13 +55,13 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT alpha,
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) + 4095) & ~4095);
|
||||||
sbmvbuffer = bufferX;
|
// sbmvbuffer = bufferX;
|
||||||
COPY_K(n, y, incy, Y, 1);
|
COPY_K(n, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) + 4095) & ~4095);
|
// sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) + 4095) & ~4095);
|
||||||
COPY_K(n, x, incx, X, 1);
|
COPY_K(n, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ static int sbmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F
|
||||||
COPY_K(n, x, incx, buffer, 1);
|
COPY_K(n, x, incx, buffer, 1);
|
||||||
|
|
||||||
x = buffer;
|
x = buffer;
|
||||||
buffer += ((COMPSIZE * n + 1023) & ~1023);
|
// buffer += ((COMPSIZE * n + 1023) & ~1023);
|
||||||
}
|
}
|
||||||
|
|
||||||
SCAL_K(n, 0, 0, ZERO,
|
SCAL_K(n, 0, 0, ZERO,
|
||||||
|
|
@ -246,7 +246,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x
|
||||||
|
|
||||||
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
||||||
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > n) range_n[num_cpu] = n;
|
if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = sbmv_kernel;
|
queue[num_cpu].routine = sbmv_kernel;
|
||||||
|
|
@ -286,7 +286,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x
|
||||||
|
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > n) range_n[num_cpu] = n;
|
if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = sbmv_kernel;
|
queue[num_cpu].routine = sbmv_kernel;
|
||||||
|
|
@ -318,7 +318,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
|
|
||||||
range_n[num_cpu] = num_cpu * ((n + 15) & ~15);
|
range_n[num_cpu] = num_cpu * ((n + 15) & ~15);
|
||||||
if (range_n[num_cpu] > n) range_n[num_cpu] = n;
|
if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = sbmv_kernel;
|
queue[num_cpu].routine = sbmv_kernel;
|
||||||
|
|
|
||||||
|
|
@ -53,13 +53,13 @@ int CNAME(BLASLONG m, FLOAT alpha, FLOAT *a,
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) + 4095) & ~4095);
|
||||||
gemvbuffer = bufferX;
|
// gemvbuffer = bufferX;
|
||||||
COPY_K(m, y, incy, Y, 1);
|
COPY_K(m, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) + 4095) & ~4095);
|
// gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) + 4095) & ~4095);
|
||||||
COPY_K(m, x, incx, X, 1);
|
COPY_K(m, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -246,7 +246,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *y,
|
||||||
|
|
||||||
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
||||||
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > m) range_n[num_cpu] = m;
|
if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = spmv_kernel;
|
queue[num_cpu].routine = spmv_kernel;
|
||||||
|
|
@ -286,7 +286,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *y,
|
||||||
|
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > m) range_n[num_cpu] = m;
|
if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = spmv_kernel;
|
queue[num_cpu].routine = spmv_kernel;
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG i
|
||||||
|
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > m) range_n[num_cpu] = m;
|
if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu;
|
||||||
|
|
||||||
queue[MAX_CPU_NUMBER - num_cpu - 1].mode = mode;
|
queue[MAX_CPU_NUMBER - num_cpu - 1].mode = mode;
|
||||||
queue[MAX_CPU_NUMBER - num_cpu - 1].routine = symv_kernel;
|
queue[MAX_CPU_NUMBER - num_cpu - 1].routine = symv_kernel;
|
||||||
|
|
@ -226,7 +226,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG i
|
||||||
|
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > m) range_n[num_cpu] = m;
|
if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = symv_kernel;
|
queue[num_cpu].routine = symv_kernel;
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ static int trmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F
|
||||||
COPY_K(args -> n, x, incx, buffer, 1);
|
COPY_K(args -> n, x, incx, buffer, 1);
|
||||||
|
|
||||||
x = buffer;
|
x = buffer;
|
||||||
buffer += ((args -> n * COMPSIZE + 1023) & ~1023);
|
// buffer += ((args -> n * COMPSIZE + 1023) & ~1023);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (range_n) y += *range_n * COMPSIZE;
|
if (range_n) y += *range_n * COMPSIZE;
|
||||||
|
|
@ -288,7 +288,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc
|
||||||
|
|
||||||
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
||||||
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > n) range_n[num_cpu] = n;
|
if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = trmv_kernel;
|
queue[num_cpu].routine = trmv_kernel;
|
||||||
|
|
@ -328,7 +328,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc
|
||||||
|
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > n) range_n[num_cpu] = n;
|
if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = trmv_kernel;
|
queue[num_cpu].routine = trmv_kernel;
|
||||||
|
|
@ -358,7 +358,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc
|
||||||
|
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > n) range_n[num_cpu] = n;
|
if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = trmv_kernel;
|
queue[num_cpu].routine = trmv_kernel;
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ static int tpmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
x = buffer;
|
x = buffer;
|
||||||
buffer += ((COMPSIZE * args -> m + 1023) & ~1023);
|
// buffer += ((COMPSIZE * args -> m + 1023) & ~1023);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef TRANS
|
#ifndef TRANS
|
||||||
|
|
@ -234,11 +234,7 @@ static int tpmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef COMPLEX
|
|
||||||
int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthreads){
|
int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthreads){
|
||||||
#else
|
|
||||||
int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthreads){
|
|
||||||
#endif
|
|
||||||
|
|
||||||
blas_arg_t args;
|
blas_arg_t args;
|
||||||
blas_queue_t queue[MAX_CPU_NUMBER];
|
blas_queue_t queue[MAX_CPU_NUMBER];
|
||||||
|
|
@ -307,7 +303,7 @@ int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthr
|
||||||
|
|
||||||
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width;
|
||||||
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > m) range_n[num_cpu] = m;
|
if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = tpmv_kernel;
|
queue[num_cpu].routine = tpmv_kernel;
|
||||||
|
|
@ -347,7 +343,7 @@ int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthr
|
||||||
|
|
||||||
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
range_m[num_cpu + 1] = range_m[num_cpu] + width;
|
||||||
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16);
|
||||||
if (range_n[num_cpu] > m) range_n[num_cpu] = m;
|
if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu;
|
||||||
|
|
||||||
queue[num_cpu].mode = mode;
|
queue[num_cpu].mode = mode;
|
||||||
queue[num_cpu].routine = tpmv_kernel;
|
queue[num_cpu].routine = tpmv_kernel;
|
||||||
|
|
|
||||||
|
|
@ -54,12 +54,16 @@ int CNAME(BLASLONG m, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, FLOAT *bu
|
||||||
COPY_K(m, b, incb, buffer, 1);
|
COPY_K(m, b, incb, buffer, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (is = 0; is < m; is += DTB_ENTRIES){
|
/*FIXME the GEMV unrolling performed here was found to be broken, see issue 1332 */
|
||||||
|
/* Multiplying DTB size by 100 is just a quick-and-dirty hack to disable it for now[B */
|
||||||
|
|
||||||
min_i = MIN(m - is, DTB_ENTRIES);
|
for (is = 0; is < m; is += DTB_ENTRIES * 100){
|
||||||
|
|
||||||
|
min_i = MIN(m - is, DTB_ENTRIES * 100);
|
||||||
|
|
||||||
#ifndef TRANSA
|
#ifndef TRANSA
|
||||||
if (is > 0){
|
if (is > 0){
|
||||||
|
fprintf(stderr,"WARNING unrolling of the trmv_U loop may give wrong results\n");
|
||||||
GEMV_N(is, min_i, 0, dp1,
|
GEMV_N(is, min_i, 0, dp1,
|
||||||
a + is * lda, lda,
|
a + is * lda, lda,
|
||||||
B + is, 1,
|
B + is, 1,
|
||||||
|
|
|
||||||
|
|
@ -83,13 +83,13 @@ void CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT alpha_r, FLOA
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
||||||
gemvbuffer = bufferX;
|
// gemvbuffer = bufferX;
|
||||||
COPY_K(M, y, incy, Y, 1);
|
COPY_K(M, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
// gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
||||||
COPY_K(N, x, incx, X, 1);
|
COPY_K(N, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,13 +61,13 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT alpha_r, FLOAT alpha_i,
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
||||||
sbmvbuffer = bufferX;
|
// sbmvbuffer = bufferX;
|
||||||
COPY_K(n, y, incy, Y, 1);
|
COPY_K(n, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
// sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
||||||
COPY_K(n, x, incx, X, 1);
|
COPY_K(n, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,13 +56,13 @@ int CNAME(BLASLONG m, FLOAT alpha_r, FLOAT alpha_i,
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
||||||
gemvbuffer = bufferX;
|
// gemvbuffer = bufferX;
|
||||||
COPY_K(m, y, incy, Y, 1);
|
COPY_K(m, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
// gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
||||||
COPY_K(m, x, incx, X, 1);
|
COPY_K(m, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,13 +60,13 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT alpha_r, FLOAT alpha_i,
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
||||||
sbmvbuffer = bufferX;
|
// sbmvbuffer = bufferX;
|
||||||
COPY_K(n, y, incy, Y, 1);
|
COPY_K(n, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
// sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095);
|
||||||
COPY_K(n, x, incx, X, 1);
|
COPY_K(n, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,13 +55,13 @@ int CNAME(BLASLONG m, FLOAT alpha_r, FLOAT alpha_i,
|
||||||
if (incy != 1) {
|
if (incy != 1) {
|
||||||
Y = bufferY;
|
Y = bufferY;
|
||||||
bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
||||||
gemvbuffer = bufferX;
|
// gemvbuffer = bufferX;
|
||||||
COPY_K(m, y, incy, Y, 1);
|
COPY_K(m, y, incy, Y, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incx != 1) {
|
if (incx != 1) {
|
||||||
X = bufferX;
|
X = bufferX;
|
||||||
gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
// gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095);
|
||||||
COPY_K(m, x, incx, X, 1);
|
COPY_K(m, x, incx, X, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dp1 = 1.;
|
// const static FLOAT dp1 = 1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
const static FLOAT dm1 = -1.;
|
// const static FLOAT dm1 = -1.;
|
||||||
|
|
||||||
int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){
|
int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ set(GEMM_COMPLEX_DEFINES RN CN RT CT NR TR RR CR NC TC RC CC)
|
||||||
foreach (GEMM_DEFINE ${GEMM_DEFINES})
|
foreach (GEMM_DEFINE ${GEMM_DEFINES})
|
||||||
string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC)
|
string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC)
|
||||||
GenerateNamedObjects("gemm.c" "${GEMM_DEFINE}" "gemm_${GEMM_DEFINE_LC}" 0)
|
GenerateNamedObjects("gemm.c" "${GEMM_DEFINE}" "gemm_${GEMM_DEFINE_LC}" 0)
|
||||||
if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
||||||
GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0)
|
GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0)
|
||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
@ -32,7 +32,7 @@ GenerateCombinationObjects("syrk_k.c" "LOWER;TRANS" "U;N" "" 1)
|
||||||
GenerateCombinationObjects("syr2k_k.c" "LOWER;TRANS" "U;N" "" 1)
|
GenerateCombinationObjects("syr2k_k.c" "LOWER;TRANS" "U;N" "" 1)
|
||||||
GenerateCombinationObjects("syrk_kernel.c" "LOWER" "U" "" 2)
|
GenerateCombinationObjects("syrk_kernel.c" "LOWER" "U" "" 2)
|
||||||
GenerateCombinationObjects("syr2k_kernel.c" "LOWER" "U" "" 2)
|
GenerateCombinationObjects("syr2k_kernel.c" "LOWER" "U" "" 2)
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
|
|
||||||
# N.B. these do NOT have a float type (e.g. DOUBLE) defined!
|
# N.B. these do NOT have a float type (e.g. DOUBLE) defined!
|
||||||
GenerateNamedObjects("gemm_thread_m.c;gemm_thread_n.c;gemm_thread_mn.c;gemm_thread_variable.c;syrk_thread.c" "" "" 0 "" "" 1)
|
GenerateNamedObjects("gemm_thread_m.c;gemm_thread_n.c;gemm_thread_mn.c;gemm_thread_variable.c;syrk_thread.c" "" "" 0 "" "" 1)
|
||||||
|
|
@ -71,7 +71,7 @@ foreach (float_type ${FLOAT_TYPES})
|
||||||
GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER" "her2k_LN" false "" "" false ${float_type})
|
GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER" "her2k_LN" false "" "" false ${float_type})
|
||||||
GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER;TRANS;CONJ" "her2k_LC" false "" "" false ${float_type})
|
GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER;TRANS;CONJ" "her2k_LC" false "" "" false ${float_type})
|
||||||
|
|
||||||
if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
||||||
#herk
|
#herk
|
||||||
GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3" 3 "herk_thread_N" false ${float_type})
|
GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3" 3 "herk_thread_N" false ${float_type})
|
||||||
GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3;TRANS;CONJ" 3 "herk_thread_C" false ${float_type})
|
GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3;TRANS;CONJ" 3 "herk_thread_C" false ${float_type})
|
||||||
|
|
@ -93,7 +93,7 @@ foreach (float_type ${FLOAT_TYPES})
|
||||||
if(USE_GEMM3M)
|
if(USE_GEMM3M)
|
||||||
GenerateNamedObjects("gemm3m.c" "${gemm_define}" "gemm3m_${gemm_define_LC}" false "" "" false ${float_type})
|
GenerateNamedObjects("gemm3m.c" "${gemm_define}" "gemm3m_${gemm_define_LC}" false "" "" false ${float_type})
|
||||||
endif()
|
endif()
|
||||||
if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
||||||
GenerateNamedObjects("gemm.c" "${gemm_define};THREADED_LEVEL3" "gemm_thread_${gemm_define_LC}" false "" "" false ${float_type})
|
GenerateNamedObjects("gemm.c" "${gemm_define};THREADED_LEVEL3" "gemm_thread_${gemm_define_LC}" false "" "" false ${float_type})
|
||||||
if(USE_GEMM3M)
|
if(USE_GEMM3M)
|
||||||
GenerateNamedObjects("gemm3m.c" "${gemm_define};THREADED_LEVEL3" "gemm3m_thread_${gemm_define_LC}" false "" "" false ${float_type})
|
GenerateNamedObjects("gemm3m.c" "${gemm_define};THREADED_LEVEL3" "gemm3m_thread_${gemm_define_LC}" false "" "" false ${float_type})
|
||||||
|
|
@ -106,7 +106,7 @@ foreach (float_type ${FLOAT_TYPES})
|
||||||
foreach (GEMM_DEFINE ${GEMM_DEFINES})
|
foreach (GEMM_DEFINE ${GEMM_DEFINES})
|
||||||
string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC)
|
string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC)
|
||||||
GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE}" "gemm3m_${GEMM_DEFINE_LC}" false "" "" false ${float_type})
|
GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE}" "gemm3m_${GEMM_DEFINE_LC}" false "" "" false ${float_type})
|
||||||
if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3)
|
||||||
GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm3m_thread_${GEMM_DEFINE_LC}" false "" "" false ${float_type})
|
GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm3m_thread_${GEMM_DEFINE_LC}" false "" "" false ${float_type})
|
||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
|
||||||
|
|
@ -251,9 +251,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
if ((k == 0) || (alpha == NULL)) return 0;
|
if ((k == 0) || (alpha == NULL)) return 0;
|
||||||
|
|
||||||
#if !defined(XDOUBLE) || !defined(QUAD_PRECISION)
|
#if !defined(XDOUBLE) || !defined(QUAD_PRECISION)
|
||||||
if ((alpha[0] == ZERO)
|
if ( alpha[0] == ZERO
|
||||||
#ifdef COMPLEX
|
#ifdef COMPLEX
|
||||||
&& (alpha[1] == ZERO)
|
&& alpha[1] == ZERO
|
||||||
#endif
|
#endif
|
||||||
) return 0;
|
) return 0;
|
||||||
#else
|
#else
|
||||||
|
|
@ -293,7 +293,7 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
min_l = k - ls;
|
min_l = k - ls;
|
||||||
|
|
||||||
if (min_l >= GEMM_Q * 2) {
|
if (min_l >= GEMM_Q * 2) {
|
||||||
gemm_p = GEMM_P;
|
// gemm_p = GEMM_P;
|
||||||
min_l = GEMM_Q;
|
min_l = GEMM_Q;
|
||||||
} else {
|
} else {
|
||||||
if (min_l > GEMM_Q) {
|
if (min_l > GEMM_Q) {
|
||||||
|
|
|
||||||
|
|
@ -974,7 +974,7 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){
|
int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){
|
||||||
|
|
||||||
BLASLONG m = args -> m;
|
BLASLONG m = args -> m;
|
||||||
BLASLONG n = args -> n;
|
// BLASLONG n = args -> n;
|
||||||
BLASLONG nthreads = args -> nthreads;
|
BLASLONG nthreads = args -> nthreads;
|
||||||
BLASLONG divN, divT;
|
BLASLONG divN, divT;
|
||||||
int mode;
|
int mode;
|
||||||
|
|
@ -985,13 +985,14 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
|
||||||
|
|
||||||
m = m_to - m_from;
|
m = m_to - m_from;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if (range_n) {
|
if (range_n) {
|
||||||
BLASLONG n_from = *(((BLASLONG *)range_n) + 0);
|
BLASLONG n_from = *(((BLASLONG *)range_n) + 0);
|
||||||
BLASLONG n_to = *(((BLASLONG *)range_n) + 1);
|
BLASLONG n_to = *(((BLASLONG *)range_n) + 1);
|
||||||
|
|
||||||
n = n_to - n_from;
|
n = n_to - n_from;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if ((args -> m < nthreads * SWITCH_RATIO) || (args -> n < nthreads * SWITCH_RATIO)) {
|
if ((args -> m < nthreads * SWITCH_RATIO) || (args -> n < nthreads * SWITCH_RATIO)) {
|
||||||
GEMM3M_LOCAL(args, range_m, range_n, sa, sb, 0);
|
GEMM3M_LOCAL(args, range_m, range_n, sa, sb, 0);
|
||||||
|
|
|
||||||
|
|
@ -154,9 +154,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
|
||||||
|
|
||||||
if ((k == 0) || (alpha == NULL)) return 0;
|
if ((k == 0) || (alpha == NULL)) return 0;
|
||||||
|
|
||||||
if ((alpha[0] == ZERO)
|
if (alpha[0] == ZERO
|
||||||
#ifdef COMPLEX
|
#ifdef COMPLEX
|
||||||
&& (alpha[1] == ZERO)
|
&& alpha[1] == ZERO
|
||||||
#endif
|
#endif
|
||||||
) return 0;
|
) return 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -158,9 +158,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
|
||||||
|
|
||||||
if ((k == 0) || (alpha == NULL)) return 0;
|
if ((k == 0) || (alpha == NULL)) return 0;
|
||||||
|
|
||||||
if ((alpha[0] == ZERO)
|
if (alpha[0] == ZERO
|
||||||
#if defined(COMPLEX) && !defined(HERK)
|
#if defined(COMPLEX) && !defined(HERK)
|
||||||
&& (alpha[1] == ZERO)
|
&& alpha[1] == ZERO
|
||||||
#endif
|
#endif
|
||||||
) return 0;
|
) return 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -200,9 +200,9 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
|
|
||||||
if ((k == 0) || (alpha == NULL)) return 0;
|
if ((k == 0) || (alpha == NULL)) return 0;
|
||||||
|
|
||||||
if ((alpha[0] == ZERO)
|
if (alpha[0] == ZERO
|
||||||
#if defined(COMPLEX) && !defined(HERK)
|
#if defined(COMPLEX) && !defined(HERK)
|
||||||
&& (alpha[1] == ZERO)
|
&& alpha[1] == ZERO
|
||||||
#endif
|
#endif
|
||||||
) return 0;
|
) return 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -219,15 +219,17 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
FLOAT *buffer[DIVIDE_RATE];
|
FLOAT *buffer[DIVIDE_RATE];
|
||||||
|
|
||||||
BLASLONG k, lda, ldb, ldc;
|
BLASLONG k, lda, ldb, ldc;
|
||||||
BLASLONG m_from, m_to, n_from, n_to, N_from, N_to;
|
BLASLONG m_from, m_to, n_from, n_to;
|
||||||
|
|
||||||
FLOAT *alpha, *beta;
|
FLOAT *alpha, *beta;
|
||||||
FLOAT *a, *b, *c;
|
FLOAT *a, *b, *c;
|
||||||
job_t *job = (job_t *)args -> common;
|
job_t *job = (job_t *)args -> common;
|
||||||
BLASLONG xxx, bufferside;
|
|
||||||
|
|
||||||
BLASLONG ls, min_l, jjs, min_jj;
|
BLASLONG nthreads_m;
|
||||||
BLASLONG is, min_i, div_n;
|
BLASLONG mypos_m, mypos_n;
|
||||||
|
|
||||||
|
BLASLONG is, js, ls, bufferside, jjs;
|
||||||
|
BLASLONG min_i, min_l, div_n, min_jj;
|
||||||
|
|
||||||
BLASLONG i, current;
|
BLASLONG i, current;
|
||||||
BLASLONG l1stride;
|
BLASLONG l1stride;
|
||||||
|
|
@ -259,74 +261,69 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
alpha = (FLOAT *)args -> alpha;
|
alpha = (FLOAT *)args -> alpha;
|
||||||
beta = (FLOAT *)args -> beta;
|
beta = (FLOAT *)args -> beta;
|
||||||
|
|
||||||
|
/* Initialize 2D CPU distribution */
|
||||||
|
nthreads_m = args -> nthreads;
|
||||||
|
if (range_m) {
|
||||||
|
nthreads_m = range_m[-1];
|
||||||
|
}
|
||||||
|
mypos_n = blas_quickdivide(mypos, nthreads_m); /* mypos_n = mypos / nthreads_m */
|
||||||
|
mypos_m = mypos - mypos_n * nthreads_m; /* mypos_m = mypos % nthreads_m */
|
||||||
|
|
||||||
|
/* Initialize m and n */
|
||||||
m_from = 0;
|
m_from = 0;
|
||||||
m_to = M;
|
m_to = M;
|
||||||
|
|
||||||
if (range_m) {
|
if (range_m) {
|
||||||
m_from = range_m[0];
|
m_from = range_m[mypos_m + 0];
|
||||||
m_to = range_m[1];
|
m_to = range_m[mypos_m + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
n_from = 0;
|
n_from = 0;
|
||||||
n_to = N;
|
n_to = N;
|
||||||
|
|
||||||
N_from = 0;
|
|
||||||
N_to = N;
|
|
||||||
|
|
||||||
if (range_n) {
|
if (range_n) {
|
||||||
n_from = range_n[mypos + 0];
|
n_from = range_n[mypos + 0];
|
||||||
n_to = range_n[mypos + 1];
|
n_to = range_n[mypos + 1];
|
||||||
|
|
||||||
N_from = range_n[0];
|
|
||||||
N_to = range_n[args -> nthreads];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Multiply C by beta if needed */
|
||||||
if (beta) {
|
if (beta) {
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
if (beta[0] != ONE)
|
if (beta[0] != ONE)
|
||||||
#else
|
#else
|
||||||
if ((beta[0] != ONE) || (beta[1] != ZERO))
|
if ((beta[0] != ONE) || (beta[1] != ZERO))
|
||||||
#endif
|
#endif
|
||||||
BETA_OPERATION(m_from, m_to, N_from, N_to, beta, c, ldc);
|
BETA_OPERATION(m_from, m_to, range_n[mypos_n * nthreads_m], range_n[(mypos_n + 1) * nthreads_m], beta, c, ldc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return early if no more computation is needed */
|
||||||
if ((k == 0) || (alpha == NULL)) return 0;
|
if ((k == 0) || (alpha == NULL)) return 0;
|
||||||
|
if (alpha[0] == ZERO
|
||||||
if ((alpha[0] == ZERO)
|
|
||||||
#ifdef COMPLEX
|
#ifdef COMPLEX
|
||||||
&& (alpha[1] == ZERO)
|
&& alpha[1] == ZERO
|
||||||
#endif
|
#endif
|
||||||
) return 0;
|
) return 0;
|
||||||
|
|
||||||
#if 0
|
/* Initialize workspace for local region of B */
|
||||||
fprintf(stderr, "Thread[%ld] m_from : %ld m_to : %ld n_from : %ld n_to : %ld N_from : %ld N_to : %ld\n",
|
|
||||||
mypos, m_from, m_to, n_from, n_to, N_from, N_to);
|
|
||||||
|
|
||||||
fprintf(stderr, "GEMM: P = %4ld Q = %4ld R = %4ld\n", (BLASLONG)GEMM_P, (BLASLONG)GEMM_Q, (BLASLONG)GEMM_R);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
||||||
|
|
||||||
buffer[0] = sb;
|
buffer[0] = sb;
|
||||||
for (i = 1; i < DIVIDE_RATE; i++) {
|
for (i = 1; i < DIVIDE_RATE; i++) {
|
||||||
buffer[i] = buffer[i - 1] + GEMM_Q * ((div_n + GEMM_UNROLL_N - 1)/GEMM_UNROLL_N) * GEMM_UNROLL_N * COMPSIZE;
|
buffer[i] = buffer[i - 1] + GEMM_Q * ((div_n + GEMM_UNROLL_N - 1)/GEMM_UNROLL_N) * GEMM_UNROLL_N * COMPSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Iterate through steps of k */
|
||||||
for(ls = 0; ls < k; ls += min_l){
|
for(ls = 0; ls < k; ls += min_l){
|
||||||
|
|
||||||
|
/* Determine step size in k */
|
||||||
min_l = k - ls;
|
min_l = k - ls;
|
||||||
|
|
||||||
if (min_l >= GEMM_Q * 2) {
|
if (min_l >= GEMM_Q * 2) {
|
||||||
min_l = GEMM_Q;
|
min_l = GEMM_Q;
|
||||||
} else {
|
} else {
|
||||||
if (min_l > GEMM_Q) min_l = (min_l + 1) / 2;
|
if (min_l > GEMM_Q) min_l = (min_l + 1) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Determine step size in m
|
||||||
|
* Note: We are currently on the first step in m
|
||||||
|
*/
|
||||||
l1stride = 1;
|
l1stride = 1;
|
||||||
min_i = m_to - m_from;
|
min_i = m_to - m_from;
|
||||||
|
|
||||||
if (min_i >= GEMM_P * 2) {
|
if (min_i >= GEMM_P * 2) {
|
||||||
min_i = GEMM_P;
|
min_i = GEMM_P;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -337,54 +334,49 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Copy local region of A into workspace */
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
|
||||||
ICOPY_OPERATION(min_l, min_i, a, lda, ls, m_from, sa);
|
ICOPY_OPERATION(min_l, min_i, a, lda, ls, m_from, sa);
|
||||||
|
|
||||||
STOP_RPCC(copy_A);
|
STOP_RPCC(copy_A);
|
||||||
|
|
||||||
|
/* Copy local region of B into workspace and apply kernel */
|
||||||
div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
||||||
|
for (js = n_from, bufferside = 0; js < n_to; js += div_n, bufferside ++) {
|
||||||
|
|
||||||
for (xxx = n_from, bufferside = 0; xxx < n_to; xxx += div_n, bufferside ++) {
|
/* Make sure if no one is using workspace */
|
||||||
|
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
|
||||||
/* Make sure if no one is using buffer */
|
|
||||||
for (i = 0; i < args -> nthreads; i++)
|
for (i = 0; i < args -> nthreads; i++)
|
||||||
while (job[mypos].working[i][CACHE_LINE_SIZE * bufferside]) {YIELDING;};
|
while (job[mypos].working[i][CACHE_LINE_SIZE * bufferside]) {YIELDING;};
|
||||||
|
|
||||||
STOP_RPCC(waiting1);
|
STOP_RPCC(waiting1);
|
||||||
|
|
||||||
#if defined(FUSED_GEMM) && !defined(TIMING)
|
#if defined(FUSED_GEMM) && !defined(TIMING)
|
||||||
|
|
||||||
FUSED_KERNEL_OPERATION(min_i, MIN(n_to, xxx + div_n) - xxx, min_l, alpha,
|
/* Fused operation to copy region of B into workspace and apply kernel */
|
||||||
sa, buffer[bufferside], b, ldb, c, ldc, m_from, xxx, ls);
|
FUSED_KERNEL_OPERATION(min_i, MIN(n_to, js + div_n) - js, min_l, alpha,
|
||||||
|
sa, buffer[bufferside], b, ldb, c, ldc, m_from, js, ls);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
for(jjs = xxx; jjs < MIN(n_to, xxx + div_n); jjs += min_jj){
|
/* Split local region of B into parts */
|
||||||
min_jj = MIN(n_to, xxx + div_n) - jjs;
|
for(jjs = js; jjs < MIN(n_to, js + div_n); jjs += min_jj){
|
||||||
|
min_jj = MIN(n_to, js + div_n) - jjs;
|
||||||
if (min_jj >= 3*GEMM_UNROLL_N) min_jj = 3*GEMM_UNROLL_N;
|
if (min_jj >= 3*GEMM_UNROLL_N) min_jj = 3*GEMM_UNROLL_N;
|
||||||
else
|
else
|
||||||
if (min_jj >= 2*GEMM_UNROLL_N) min_jj = 2*GEMM_UNROLL_N;
|
if (min_jj >= 2*GEMM_UNROLL_N) min_jj = 2*GEMM_UNROLL_N;
|
||||||
else
|
else
|
||||||
if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
|
if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
|
||||||
|
|
||||||
|
/* Copy part of local region of B into workspace */
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
|
||||||
OCOPY_OPERATION(min_l, min_jj, b, ldb, ls, jjs,
|
OCOPY_OPERATION(min_l, min_jj, b, ldb, ls, jjs,
|
||||||
buffer[bufferside] + min_l * (jjs - xxx) * COMPSIZE * l1stride);
|
buffer[bufferside] + min_l * (jjs - js) * COMPSIZE * l1stride);
|
||||||
|
|
||||||
STOP_RPCC(copy_B);
|
STOP_RPCC(copy_B);
|
||||||
|
|
||||||
|
/* Apply kernel with local region of A and part of local region of B */
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
|
||||||
KERNEL_OPERATION(min_i, min_jj, min_l, alpha,
|
KERNEL_OPERATION(min_i, min_jj, min_l, alpha,
|
||||||
sa, buffer[bufferside] + min_l * (jjs - xxx) * COMPSIZE * l1stride,
|
sa, buffer[bufferside] + min_l * (jjs - js) * COMPSIZE * l1stride,
|
||||||
c, ldc, m_from, jjs);
|
c, ldc, m_from, jjs);
|
||||||
|
|
||||||
STOP_RPCC(kernel);
|
STOP_RPCC(kernel);
|
||||||
|
|
||||||
#ifdef TIMING
|
#ifdef TIMING
|
||||||
|
|
@ -394,51 +386,54 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < args -> nthreads; i++) job[mypos].working[i][CACHE_LINE_SIZE * bufferside] = (BLASLONG)buffer[bufferside];
|
/* Set flag so other threads can access local region of B */
|
||||||
|
for (i = mypos_n * nthreads_m; i < (mypos_n + 1) * nthreads_m; i++)
|
||||||
|
job[mypos].working[i][CACHE_LINE_SIZE * bufferside] = (BLASLONG)buffer[bufferside];
|
||||||
WMB;
|
WMB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get regions of B from other threads and apply kernel */
|
||||||
current = mypos;
|
current = mypos;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
||||||
|
/* This thread accesses regions of B from threads in the range
|
||||||
|
* [ mypos_n * nthreads_m, (mypos_n+1) * nthreads_m ) */
|
||||||
current ++;
|
current ++;
|
||||||
if (current >= args -> nthreads) current = 0;
|
if (current >= (mypos_n + 1) * nthreads_m) current = mypos_n * nthreads_m;
|
||||||
|
|
||||||
|
/* Split other region of B into parts */
|
||||||
div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
||||||
|
for (js = range_n[current], bufferside = 0; js < range_n[current + 1]; js += div_n, bufferside ++) {
|
||||||
for (xxx = range_n[current], bufferside = 0; xxx < range_n[current + 1]; xxx += div_n, bufferside ++) {
|
|
||||||
|
|
||||||
if (current != mypos) {
|
if (current != mypos) {
|
||||||
|
|
||||||
|
/* Wait until other region of B is initialized */
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
|
||||||
/* thread has to wait */
|
|
||||||
while(job[current].working[mypos][CACHE_LINE_SIZE * bufferside] == 0) {YIELDING;};
|
while(job[current].working[mypos][CACHE_LINE_SIZE * bufferside] == 0) {YIELDING;};
|
||||||
|
|
||||||
STOP_RPCC(waiting2);
|
STOP_RPCC(waiting2);
|
||||||
|
|
||||||
|
/* Apply kernel with local region of A and part of other region of B */
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - js, div_n), min_l, alpha,
|
||||||
KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - xxx, div_n), min_l, alpha,
|
|
||||||
sa, (FLOAT *)job[current].working[mypos][CACHE_LINE_SIZE * bufferside],
|
sa, (FLOAT *)job[current].working[mypos][CACHE_LINE_SIZE * bufferside],
|
||||||
c, ldc, m_from, xxx);
|
c, ldc, m_from, js);
|
||||||
|
|
||||||
STOP_RPCC(kernel);
|
STOP_RPCC(kernel);
|
||||||
|
|
||||||
#ifdef TIMING
|
#ifdef TIMING
|
||||||
ops += 2 * min_i * MIN(range_n[current + 1] - xxx, div_n) * min_l;
|
ops += 2 * min_i * MIN(range_n[current + 1] - js, div_n) * min_l;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Clear synchronization flag if this thread is done with other region of B */
|
||||||
if (m_to - m_from == min_i) {
|
if (m_to - m_from == min_i) {
|
||||||
job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0;
|
job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (current != mypos);
|
} while (current != mypos);
|
||||||
|
|
||||||
|
/* Iterate through steps of m
|
||||||
|
* Note: First step has already been finished */
|
||||||
for(is = m_from + min_i; is < m_to; is += min_i){
|
for(is = m_from + min_i; is < m_to; is += min_i){
|
||||||
min_i = m_to - is;
|
min_i = m_to - is;
|
||||||
|
|
||||||
if (min_i >= GEMM_P * 2) {
|
if (min_i >= GEMM_P * 2) {
|
||||||
min_i = GEMM_P;
|
min_i = GEMM_P;
|
||||||
} else
|
} else
|
||||||
|
|
@ -446,40 +441,41 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
min_i = (((min_i + 1) / 2 + GEMM_UNROLL_M - 1)/GEMM_UNROLL_M) * GEMM_UNROLL_M;
|
min_i = (((min_i + 1) / 2 + GEMM_UNROLL_M - 1)/GEMM_UNROLL_M) * GEMM_UNROLL_M;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Copy local region of A into workspace */
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
|
||||||
ICOPY_OPERATION(min_l, min_i, a, lda, ls, is, sa);
|
ICOPY_OPERATION(min_l, min_i, a, lda, ls, is, sa);
|
||||||
|
|
||||||
STOP_RPCC(copy_A);
|
STOP_RPCC(copy_A);
|
||||||
|
|
||||||
|
/* Get regions of B and apply kernel */
|
||||||
current = mypos;
|
current = mypos;
|
||||||
do {
|
do {
|
||||||
|
|
||||||
|
/* Split region of B into parts and apply kernel */
|
||||||
div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE;
|
||||||
|
for (js = range_n[current], bufferside = 0; js < range_n[current + 1]; js += div_n, bufferside ++) {
|
||||||
|
|
||||||
for (xxx = range_n[current], bufferside = 0; xxx < range_n[current + 1]; xxx += div_n, bufferside ++) {
|
/* Apply kernel with local region of A and part of region of B */
|
||||||
|
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - js, div_n), min_l, alpha,
|
||||||
KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - xxx, div_n), min_l, alpha,
|
|
||||||
sa, (FLOAT *)job[current].working[mypos][CACHE_LINE_SIZE * bufferside],
|
sa, (FLOAT *)job[current].working[mypos][CACHE_LINE_SIZE * bufferside],
|
||||||
c, ldc, is, xxx);
|
c, ldc, is, js);
|
||||||
|
|
||||||
STOP_RPCC(kernel);
|
STOP_RPCC(kernel);
|
||||||
|
|
||||||
#ifdef TIMING
|
#ifdef TIMING
|
||||||
ops += 2 * min_i * MIN(range_n[current + 1] - xxx, div_n) * min_l;
|
ops += 2 * min_i * MIN(range_n[current + 1] - js, div_n) * min_l;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Clear synchronization flag if this thread is done with region of B */
|
||||||
if (is + min_i >= m_to) {
|
if (is + min_i >= m_to) {
|
||||||
/* Thread doesn't need this buffer any more */
|
|
||||||
job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0;
|
job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0;
|
||||||
WMB;
|
WMB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This thread accesses regions of B from threads in the range
|
||||||
|
* [ mypos_n * nthreads_m, (mypos_n+1) * nthreads_m ) */
|
||||||
current ++;
|
current ++;
|
||||||
if (current >= args -> nthreads) current = 0;
|
if (current >= (mypos_n + 1) * nthreads_m) current = mypos_n * nthreads_m;
|
||||||
|
|
||||||
} while (current != mypos);
|
} while (current != mypos);
|
||||||
|
|
||||||
|
|
@ -487,14 +483,13 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Wait until all other threads are done with local region of B */
|
||||||
START_RPCC();
|
START_RPCC();
|
||||||
|
|
||||||
for (i = 0; i < args -> nthreads; i++) {
|
for (i = 0; i < args -> nthreads; i++) {
|
||||||
for (xxx = 0; xxx < DIVIDE_RATE; xxx++) {
|
for (js = 0; js < DIVIDE_RATE; js++) {
|
||||||
while (job[mypos].working[i][CACHE_LINE_SIZE * xxx] ) {YIELDING;};
|
while (job[mypos].working[i][CACHE_LINE_SIZE * js] ) {YIELDING;};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
STOP_RPCC(waiting3);
|
STOP_RPCC(waiting3);
|
||||||
|
|
||||||
#ifdef TIMING
|
#ifdef TIMING
|
||||||
|
|
@ -507,17 +502,6 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
(double)waiting2 /(double)total * 100.,
|
(double)waiting2 /(double)total * 100.,
|
||||||
(double)waiting3 /(double)total * 100.,
|
(double)waiting3 /(double)total * 100.,
|
||||||
(double)ops/(double)kernel / 4. * 100.);
|
(double)ops/(double)kernel / 4. * 100.);
|
||||||
|
|
||||||
#if 0
|
|
||||||
fprintf(stderr, "GEMM [%2ld] Copy_A : %6.2ld Copy_B : %6.2ld Wait : %6.2ld\n",
|
|
||||||
mypos, copy_A, copy_B, waiting);
|
|
||||||
|
|
||||||
fprintf(stderr, "Waiting[%2ld] %6.2f %6.2f %6.2f\n",
|
|
||||||
mypos,
|
|
||||||
(double)waiting1/(double)waiting * 100.,
|
|
||||||
(double)waiting2/(double)waiting * 100.,
|
|
||||||
(double)waiting3/(double)waiting * 100.);
|
|
||||||
#endif
|
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -525,7 +509,8 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
*range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){
|
*range_n, FLOAT *sa, FLOAT *sb,
|
||||||
|
BLASLONG nthreads_m, BLASLONG nthreads_n) {
|
||||||
|
|
||||||
blas_arg_t newarg;
|
blas_arg_t newarg;
|
||||||
|
|
||||||
|
|
@ -537,10 +522,10 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
|
|
||||||
blas_queue_t queue[MAX_CPU_NUMBER];
|
blas_queue_t queue[MAX_CPU_NUMBER];
|
||||||
|
|
||||||
BLASLONG range_M[MAX_CPU_NUMBER + 1];
|
BLASLONG range_M_buffer[MAX_CPU_NUMBER + 2];
|
||||||
BLASLONG range_N[MAX_CPU_NUMBER + 1];
|
BLASLONG range_N_buffer[MAX_CPU_NUMBER + 2];
|
||||||
|
BLASLONG *range_M, *range_N;
|
||||||
BLASLONG num_cpu_m, num_cpu_n;
|
BLASLONG num_parts;
|
||||||
|
|
||||||
BLASLONG nthreads = args -> nthreads;
|
BLASLONG nthreads = args -> nthreads;
|
||||||
|
|
||||||
|
|
@ -548,6 +533,7 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
BLASLONG m, n, n_from, n_to;
|
BLASLONG m, n, n_from, n_to;
|
||||||
int mode;
|
int mode;
|
||||||
|
|
||||||
|
/* Get execution mode */
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
#ifdef XDOUBLE
|
#ifdef XDOUBLE
|
||||||
mode = BLAS_XDOUBLE | BLAS_REAL | BLAS_NODE;
|
mode = BLAS_XDOUBLE | BLAS_REAL | BLAS_NODE;
|
||||||
|
|
@ -566,6 +552,16 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_ALLOC_HEAP
|
||||||
|
/* Dynamically allocate workspace */
|
||||||
|
job = (job_t*)malloc(MAX_CPU_NUMBER * sizeof(job_t));
|
||||||
|
if(job==NULL){
|
||||||
|
fprintf(stderr, "OpenBLAS: malloc failed in %s\n", __func__);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Initialize struct for arguments */
|
||||||
newarg.m = args -> m;
|
newarg.m = args -> m;
|
||||||
newarg.n = args -> n;
|
newarg.n = args -> n;
|
||||||
newarg.k = args -> k;
|
newarg.k = args -> k;
|
||||||
|
|
@ -578,23 +574,19 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
newarg.alpha = args -> alpha;
|
newarg.alpha = args -> alpha;
|
||||||
newarg.beta = args -> beta;
|
newarg.beta = args -> beta;
|
||||||
newarg.nthreads = args -> nthreads;
|
newarg.nthreads = args -> nthreads;
|
||||||
|
|
||||||
#ifdef USE_ALLOC_HEAP
|
|
||||||
job = (job_t*)malloc(MAX_CPU_NUMBER * sizeof(job_t));
|
|
||||||
if(job==NULL){
|
|
||||||
fprintf(stderr, "OpenBLAS: malloc failed in %s\n", __func__);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
newarg.common = (void *)job;
|
newarg.common = (void *)job;
|
||||||
|
|
||||||
#ifdef PARAMTEST
|
#ifdef PARAMTEST
|
||||||
newarg.gemm_p = args -> gemm_p;
|
newarg.gemm_p = args -> gemm_p;
|
||||||
newarg.gemm_q = args -> gemm_q;
|
newarg.gemm_q = args -> gemm_q;
|
||||||
newarg.gemm_r = args -> gemm_r;
|
newarg.gemm_r = args -> gemm_r;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Initialize partitions in m and n
|
||||||
|
* Note: The number of CPU partitions is stored in the -1 entry */
|
||||||
|
range_M = &range_M_buffer[1];
|
||||||
|
range_N = &range_N_buffer[1];
|
||||||
|
range_M[-1] = nthreads_m;
|
||||||
|
range_N[-1] = nthreads_n;
|
||||||
if (!range_m) {
|
if (!range_m) {
|
||||||
range_M[0] = 0;
|
range_M[0] = 0;
|
||||||
m = args -> m;
|
m = args -> m;
|
||||||
|
|
@ -603,34 +595,35 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
m = range_m[1] - range_m[0];
|
m = range_m[1] - range_m[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
num_cpu_m = 0;
|
/* Partition m into nthreads_m regions */
|
||||||
|
num_parts = 0;
|
||||||
while (m > 0){
|
while (m > 0){
|
||||||
|
width = blas_quickdivide(m + nthreads_m - num_parts - 1, nthreads_m - num_parts);
|
||||||
width = blas_quickdivide(m + nthreads - num_cpu_m - 1, nthreads - num_cpu_m);
|
|
||||||
|
|
||||||
m -= width;
|
m -= width;
|
||||||
if (m < 0) width = width + m;
|
if (m < 0) width = width + m;
|
||||||
|
range_M[num_parts + 1] = range_M[num_parts] + width;
|
||||||
range_M[num_cpu_m + 1] = range_M[num_cpu_m] + width;
|
num_parts ++;
|
||||||
|
}
|
||||||
num_cpu_m ++;
|
for (i = num_parts; i < MAX_CPU_NUMBER; i++) {
|
||||||
|
range_M[i + 1] = range_M[num_parts];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < num_cpu_m; i++) {
|
/* Initialize parameters for parallel execution */
|
||||||
|
for (i = 0; i < nthreads; i++) {
|
||||||
queue[i].mode = mode;
|
queue[i].mode = mode;
|
||||||
queue[i].routine = inner_thread;
|
queue[i].routine = inner_thread;
|
||||||
queue[i].args = &newarg;
|
queue[i].args = &newarg;
|
||||||
queue[i].range_m = &range_M[i];
|
queue[i].range_m = range_M;
|
||||||
queue[i].range_n = &range_N[0];
|
queue[i].range_n = range_N;
|
||||||
queue[i].sa = NULL;
|
queue[i].sa = NULL;
|
||||||
queue[i].sb = NULL;
|
queue[i].sb = NULL;
|
||||||
queue[i].next = &queue[i + 1];
|
queue[i].next = &queue[i + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
queue[0].sa = sa;
|
queue[0].sa = sa;
|
||||||
queue[0].sb = sb;
|
queue[0].sb = sb;
|
||||||
|
queue[nthreads - 1].next = NULL;
|
||||||
|
|
||||||
|
/* Iterate through steps of n */
|
||||||
if (!range_n) {
|
if (!range_n) {
|
||||||
n_from = 0;
|
n_from = 0;
|
||||||
n_to = args -> n;
|
n_to = args -> n;
|
||||||
|
|
@ -638,38 +631,38 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG
|
||||||
n_from = range_n[0];
|
n_from = range_n[0];
|
||||||
n_to = range_n[1];
|
n_to = range_n[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
for(js = n_from; js < n_to; js += GEMM_R * nthreads){
|
for(js = n_from; js < n_to; js += GEMM_R * nthreads){
|
||||||
n = n_to - js;
|
n = n_to - js;
|
||||||
if (n > GEMM_R * nthreads) n = GEMM_R * nthreads;
|
if (n > GEMM_R * nthreads) n = GEMM_R * nthreads;
|
||||||
|
|
||||||
|
/* Partition (a step of) n into nthreads regions */
|
||||||
range_N[0] = js;
|
range_N[0] = js;
|
||||||
|
num_parts = 0;
|
||||||
num_cpu_n = 0;
|
|
||||||
|
|
||||||
while (n > 0){
|
while (n > 0){
|
||||||
|
width = blas_quickdivide(n + nthreads - num_parts - 1, nthreads - num_parts);
|
||||||
width = blas_quickdivide(n + nthreads - num_cpu_n - 1, nthreads - num_cpu_n);
|
if (width < SWITCH_RATIO) {
|
||||||
|
width = SWITCH_RATIO;
|
||||||
|
}
|
||||||
n -= width;
|
n -= width;
|
||||||
if (n < 0) width = width + n;
|
if (n < 0) width = width + n;
|
||||||
|
range_N[num_parts + 1] = range_N[num_parts] + width;
|
||||||
range_N[num_cpu_n + 1] = range_N[num_cpu_n] + width;
|
num_parts ++;
|
||||||
|
}
|
||||||
num_cpu_n ++;
|
for (j = num_parts; j < MAX_CPU_NUMBER; j++) {
|
||||||
|
range_N[j + 1] = range_N[num_parts];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < num_cpu_m; j++) {
|
/* Clear synchronization flags */
|
||||||
for (i = 0; i < num_cpu_m; i++) {
|
for (i = 0; i < MAX_CPU_NUMBER; i++) {
|
||||||
|
for (j = 0; j < MAX_CPU_NUMBER; j++) {
|
||||||
for (k = 0; k < DIVIDE_RATE; k++) {
|
for (k = 0; k < DIVIDE_RATE; k++) {
|
||||||
job[j].working[i][CACHE_LINE_SIZE * k] = 0;
|
job[i].working[j][CACHE_LINE_SIZE * k] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
queue[num_cpu_m - 1].next = NULL;
|
/* Execute parallel computation */
|
||||||
|
exec_blas(nthreads, queue);
|
||||||
exec_blas(num_cpu_m, queue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_ALLOC_HEAP
|
#ifdef USE_ALLOC_HEAP
|
||||||
|
|
@ -683,88 +676,42 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
|
||||||
|
|
||||||
BLASLONG m = args -> m;
|
BLASLONG m = args -> m;
|
||||||
BLASLONG n = args -> n;
|
BLASLONG n = args -> n;
|
||||||
BLASLONG nthreads = args -> nthreads;
|
BLASLONG nthreads_m, nthreads_n;
|
||||||
BLASLONG divN, divT;
|
|
||||||
int mode;
|
|
||||||
|
|
||||||
if (nthreads == 1) {
|
|
||||||
GEMM_LOCAL(args, range_m, range_n, sa, sb, 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/* Get dimensions from index ranges if available */
|
||||||
if (range_m) {
|
if (range_m) {
|
||||||
BLASLONG m_from = *(((BLASLONG *)range_m) + 0);
|
m = range_m[1] - range_m[0];
|
||||||
BLASLONG m_to = *(((BLASLONG *)range_m) + 1);
|
|
||||||
|
|
||||||
m = m_to - m_from;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (range_n) {
|
if (range_n) {
|
||||||
BLASLONG n_from = *(((BLASLONG *)range_n) + 0);
|
n = range_n[1] - range_n[0];
|
||||||
BLASLONG n_to = *(((BLASLONG *)range_n) + 1);
|
|
||||||
|
|
||||||
n = n_to - n_from;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m < nthreads * SWITCH_RATIO) || (n < nthreads * SWITCH_RATIO)) {
|
/* Partitions in m should have at least SWITCH_RATIO rows */
|
||||||
GEMM_LOCAL(args, range_m, range_n, sa, sb, 0);
|
if (m < 2 * SWITCH_RATIO) {
|
||||||
return 0;
|
nthreads_m = 1;
|
||||||
}
|
|
||||||
|
|
||||||
divT = nthreads;
|
|
||||||
divN = 1;
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
while ((GEMM_P * divT > m * SWITCH_RATIO) && (divT > 1)) {
|
|
||||||
do {
|
|
||||||
divT --;
|
|
||||||
divN = 1;
|
|
||||||
while (divT * divN < nthreads) divN ++;
|
|
||||||
} while ((divT * divN != nthreads) && (divT > 1));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// fprintf(stderr, "divN = %4ld divT = %4ld\n", divN, divT);
|
|
||||||
|
|
||||||
args -> nthreads = divT;
|
|
||||||
|
|
||||||
if (divN == 1){
|
|
||||||
|
|
||||||
gemm_driver(args, range_m, range_n, sa, sb, 0);
|
|
||||||
} else {
|
} else {
|
||||||
#ifndef COMPLEX
|
nthreads_m = args -> nthreads;
|
||||||
#ifdef XDOUBLE
|
while (m < nthreads_m * SWITCH_RATIO) {
|
||||||
mode = BLAS_XDOUBLE | BLAS_REAL;
|
nthreads_m = nthreads_m / 2;
|
||||||
#elif defined(DOUBLE)
|
}
|
||||||
mode = BLAS_DOUBLE | BLAS_REAL;
|
}
|
||||||
#else
|
|
||||||
mode = BLAS_SINGLE | BLAS_REAL;
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#ifdef XDOUBLE
|
|
||||||
mode = BLAS_XDOUBLE | BLAS_COMPLEX;
|
|
||||||
#elif defined(DOUBLE)
|
|
||||||
mode = BLAS_DOUBLE | BLAS_COMPLEX;
|
|
||||||
#else
|
|
||||||
mode = BLAS_SINGLE | BLAS_COMPLEX;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(TN) || defined(TT) || defined(TR) || defined(TC) || \
|
/* Partitions in n should have at most SWITCH_RATIO * nthreads_m columns */
|
||||||
defined(CN) || defined(CT) || defined(CR) || defined(CC)
|
if (n < SWITCH_RATIO * nthreads_m) {
|
||||||
mode |= (BLAS_TRANSA_T);
|
nthreads_n = 1;
|
||||||
#endif
|
} else {
|
||||||
#if defined(NT) || defined(TT) || defined(RT) || defined(CT) || \
|
nthreads_n = (n + SWITCH_RATIO * nthreads_m - 1) / (SWITCH_RATIO * nthreads_m);
|
||||||
defined(NC) || defined(TC) || defined(RC) || defined(CC)
|
if (nthreads_m * nthreads_n > args -> nthreads) {
|
||||||
mode |= (BLAS_TRANSB_T);
|
nthreads_n = blas_quickdivide(args -> nthreads, nthreads_m);
|
||||||
#endif
|
}
|
||||||
|
}
|
||||||
#ifdef OS_WINDOWS
|
|
||||||
gemm_thread_n(mode, args, range_m, range_n, GEMM_LOCAL, sa, sb, divN);
|
|
||||||
#else
|
|
||||||
gemm_thread_n(mode, args, range_m, range_n, gemm_driver, sa, sb, divN);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
/* Execute serial or parallel computation */
|
||||||
|
if (nthreads_m * nthreads_n <= 1) {
|
||||||
|
GEMM_LOCAL(args, range_m, range_n, sa, sb, 0);
|
||||||
|
} else {
|
||||||
|
args -> nthreads = nthreads_m * nthreads_n;
|
||||||
|
gemm_driver(args, range_m, range_n, sa, sb, nthreads_m, nthreads_n);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ else ()
|
||||||
set(MEMORY memory.c)
|
set(MEMORY memory.c)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (SMP)
|
if (USE_THREAD)
|
||||||
|
|
||||||
if (USE_OPENMP)
|
if (USE_OPENMP)
|
||||||
set(BLAS_SERVER blas_server_omp.c)
|
set(BLAS_SERVER blas_server_omp.c)
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIA
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
kOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
**********************************************************************************/
|
**********************************************************************************/
|
||||||
|
|
@ -78,6 +78,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <sys/sysinfo.h>
|
#include <sys/sysinfo.h>
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <sys/shm.h>
|
#include <sys/shm.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
|
|
@ -88,9 +90,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#if defined(BIGNUMA)
|
#if defined(BIGNUMA)
|
||||||
// max number of nodes as defined in numa.h
|
// max number of nodes as defined in numa.h
|
||||||
// max cpus as defined in sched.h
|
// max cpus as defined in most sched.h
|
||||||
|
// cannot use CPU_SETSIZE directly as some
|
||||||
|
// Linux distributors set it to 4096
|
||||||
#define MAX_NODES 128
|
#define MAX_NODES 128
|
||||||
#define MAX_CPUS CPU_SETSIZE
|
#define MAX_CPUS 1024
|
||||||
#else
|
#else
|
||||||
#define MAX_NODES 16
|
#define MAX_NODES 16
|
||||||
#define MAX_CPUS 256
|
#define MAX_CPUS 256
|
||||||
|
|
@ -233,7 +237,7 @@ static inline void get_cpumap(int node, unsigned long * node_info) {
|
||||||
if(k!=0){
|
if(k!=0){
|
||||||
name[k]='\0';
|
name[k]='\0';
|
||||||
affinity[count++] = strtoul(name, &dummy, 16);
|
affinity[count++] = strtoul(name, &dummy, 16);
|
||||||
k=0;
|
// k=0;
|
||||||
}
|
}
|
||||||
// 0-63bit -> node_info[0], 64-128bit -> node_info[1] ....
|
// 0-63bit -> node_info[0], 64-128bit -> node_info[1] ....
|
||||||
// revert the sequence
|
// revert the sequence
|
||||||
|
|
@ -289,7 +293,7 @@ static inline void get_share(int cpu, int level, unsigned long * share) {
|
||||||
if(k!=0){
|
if(k!=0){
|
||||||
name[k]='\0';
|
name[k]='\0';
|
||||||
affinity[count++] = strtoul(name, &dummy, 16);
|
affinity[count++] = strtoul(name, &dummy, 16);
|
||||||
k=0;
|
// k=0;
|
||||||
}
|
}
|
||||||
// 0-63bit -> node_info[0], 64-128bit -> node_info[1] ....
|
// 0-63bit -> node_info[0], 64-128bit -> node_info[1] ....
|
||||||
// revert the sequence
|
// revert the sequence
|
||||||
|
|
@ -629,10 +633,12 @@ static inline int is_dead(int id) {
|
||||||
return shmctl(id, IPC_STAT, &ds);
|
return shmctl(id, IPC_STAT, &ds);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void open_shmem(void) {
|
static int open_shmem(void) {
|
||||||
|
|
||||||
int try = 0;
|
int try = 0;
|
||||||
|
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
||||||
#if defined(BIGNUMA)
|
#if defined(BIGNUMA)
|
||||||
|
|
@ -650,34 +656,53 @@ static void open_shmem(void) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shmid == -1) err = errno;
|
||||||
|
|
||||||
try ++;
|
try ++;
|
||||||
|
|
||||||
} while ((try < 10) && (shmid == -1));
|
} while ((try < 10) && (shmid == -1));
|
||||||
|
|
||||||
if (shmid == -1) {
|
if (shmid == -1) {
|
||||||
fprintf(stderr, "GotoBLAS : Can't open shared memory. Terminated.\n");
|
fprintf (stderr, "Obtaining shared memory segment failed in open_shmem: %s\n",strerror(err));
|
||||||
exit(1);
|
fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n");
|
||||||
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shmid != -1) common = (shm_t *)shmat(shmid, NULL, 0);
|
if (shmid != -1) {
|
||||||
|
if ( (common = shmat(shmid, NULL, 0)) == (void*)-1) {
|
||||||
|
perror ("Attaching shared memory segment failed in open_shmem");
|
||||||
|
fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n");
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "Shared Memory id = %x Address = %p\n", shmid, common);
|
fprintf(stderr, "Shared Memory id = %x Address = %p\n", shmid, common);
|
||||||
#endif
|
#endif
|
||||||
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void create_pshmem(void) {
|
static int create_pshmem(void) {
|
||||||
|
|
||||||
pshmid = shmget(IPC_PRIVATE, 4096, IPC_CREAT | 0666);
|
pshmid = shmget(IPC_PRIVATE, 4096, IPC_CREAT | 0666);
|
||||||
|
|
||||||
paddr = shmat(pshmid, NULL, 0);
|
if (pshmid == -1) {
|
||||||
|
perror ("Obtaining shared memory segment failed in create_pshmem");
|
||||||
|
fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n");
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
shmctl(pshmid, IPC_RMID, 0);
|
if ( (paddr = shmat(pshmid, NULL, 0)) == (void*)-1) {
|
||||||
|
perror ("Attaching shared memory segment failed in create_pshmem");
|
||||||
|
fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n");
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shmctl(pshmid, IPC_RMID, 0) == -1) return (1);
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "Private Shared Memory id = %x Address = %p\n", pshmid, paddr);
|
fprintf(stderr, "Private Shared Memory id = %x Address = %p\n", pshmid, paddr);
|
||||||
#endif
|
#endif
|
||||||
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void local_cpu_map(void) {
|
static void local_cpu_map(void) {
|
||||||
|
|
@ -805,9 +830,15 @@ void gotoblas_affinity_init(void) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_pshmem();
|
if (create_pshmem() != 0) {
|
||||||
|
disable_mapping = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
open_shmem();
|
if (open_shmem() != 0) {
|
||||||
|
disable_mapping = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
while ((common -> lock) && (common -> magic != SH_MAGIC)) {
|
while ((common -> lock) && (common -> magic != SH_MAGIC)) {
|
||||||
if (is_dead(common -> shmid)) {
|
if (is_dead(common -> shmid)) {
|
||||||
|
|
@ -815,7 +846,7 @@ void gotoblas_affinity_init(void) {
|
||||||
common -> shmid = 0;
|
common -> shmid = 0;
|
||||||
common -> magic = 0;
|
common -> magic = 0;
|
||||||
} else {
|
} else {
|
||||||
sched_yield();
|
YIELDING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -872,6 +903,7 @@ void gotoblas_affinity_init(void) {
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
common->num_procs = CPU_COUNT(sizeof(cpu_set_t),cpusetp);
|
common->num_procs = CPU_COUNT(sizeof(cpu_set_t),cpusetp);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ int get_num_procs(void) {
|
||||||
cpu_set_t *cpusetp;
|
cpu_set_t *cpusetp;
|
||||||
size_t size;
|
size_t size;
|
||||||
int ret;
|
int ret;
|
||||||
int i,n;
|
// int i,n;
|
||||||
|
|
||||||
if (!nums) nums = sysconf(_SC_NPROCESSORS_CONF);
|
if (!nums) nums = sysconf(_SC_NPROCESSORS_CONF);
|
||||||
#if !defined(OS_LINUX)
|
#if !defined(OS_LINUX)
|
||||||
|
|
@ -348,7 +348,7 @@ int blas_get_cpu_number(void){
|
||||||
max_num = get_num_procs();
|
max_num = get_num_procs();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
blas_goto_num = 0;
|
// blas_goto_num = 0;
|
||||||
#ifndef USE_OPENMP
|
#ifndef USE_OPENMP
|
||||||
blas_goto_num=openblas_num_threads_env();
|
blas_goto_num=openblas_num_threads_env();
|
||||||
if (blas_goto_num < 0) blas_goto_num = 0;
|
if (blas_goto_num < 0) blas_goto_num = 0;
|
||||||
|
|
@ -360,7 +360,7 @@ int blas_get_cpu_number(void){
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
blas_omp_num = 0;
|
// blas_omp_num = 0;
|
||||||
blas_omp_num=openblas_omp_num_threads_env();
|
blas_omp_num=openblas_omp_num_threads_env();
|
||||||
if (blas_omp_num < 0) blas_omp_num = 0;
|
if (blas_omp_num < 0) blas_omp_num = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(NOFORTRAN), $(filter $(NOFORTRAN),1 2))
|
ifneq (,$(filter 1 2,$(NOFORTRAN)))
|
||||||
FEXTRALIB =
|
FEXTRALIB =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
@ -112,7 +112,7 @@ else
|
||||||
$(OBJCONV) @objconv.def ../$(LIBNAME) ../$(LIBNAME).osx.renamed
|
$(OBJCONV) @objconv.def ../$(LIBNAME) ../$(LIBNAME).osx.renamed
|
||||||
$(LIBDYNNAME) : ../$(LIBNAME).osx.renamed osx.def
|
$(LIBDYNNAME) : ../$(LIBNAME).osx.renamed osx.def
|
||||||
endif
|
endif
|
||||||
ifeq ($(NOFORTRAN), $(filter $(NOFORTRAN),1 2))
|
ifneq (,$(filter 1 2,$(NOFORTRAN)))
|
||||||
#only build without Fortran
|
#only build without Fortran
|
||||||
$(CC) $(CFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(LIBDYNNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB)
|
$(CC) $(CFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(LIBDYNNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB)
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -815,6 +815,28 @@
|
||||||
sladiv1,
|
sladiv1,
|
||||||
dladiv1,
|
dladiv1,
|
||||||
iparam2stage,
|
iparam2stage,
|
||||||
|
|
||||||
|
# functions added for lapack-3.8.0
|
||||||
|
|
||||||
|
ilaenv2stage,
|
||||||
|
ssysv_aa_2stage,
|
||||||
|
ssytrf_aa_2stage,
|
||||||
|
ssytrs_aa_2stage,
|
||||||
|
chesv_aa_2stage,
|
||||||
|
chetrf_aa_2stage,
|
||||||
|
chetrs_aa_2stage,
|
||||||
|
csysv_aa_2stage,
|
||||||
|
csytrf_aa_2stage,
|
||||||
|
csytrs_aa_2stage,
|
||||||
|
dsysv_aa_2stage,
|
||||||
|
dsytrf_aa_2stage,
|
||||||
|
dsytrs_aa_2stage,
|
||||||
|
zhesv_aa_2stage,
|
||||||
|
zhetrf_aa_2stage,
|
||||||
|
zhetrs_aa_2stage,
|
||||||
|
zsysv_aa_2stage,
|
||||||
|
zsytrf_aa_2stage,
|
||||||
|
zsytrs_aa_2stage
|
||||||
);
|
);
|
||||||
|
|
||||||
@lapack_extendedprecision_objs = (
|
@lapack_extendedprecision_objs = (
|
||||||
|
|
@ -3211,9 +3233,14 @@
|
||||||
LAPACKE_zuncsd2by1_work,
|
LAPACKE_zuncsd2by1_work,
|
||||||
|
|
||||||
## new function from lapack-3.7.0
|
## new function from lapack-3.7.0
|
||||||
|
LAPACKE_cgelq,
|
||||||
|
LAPACKE_cgelq_work,
|
||||||
|
LAPACKE_cgemlq,
|
||||||
|
LAPACKE_cgemlq_work,
|
||||||
LAPACKE_cgemqr,
|
LAPACKE_cgemqr,
|
||||||
LAPACKE_cgemqr_work,
|
LAPACKE_cgemqr_work,
|
||||||
|
LAPACKE_cgeqr,
|
||||||
|
LAPACKE_cgeqr_work,
|
||||||
LAPACKE_cgetsls,
|
LAPACKE_cgetsls,
|
||||||
LAPACKE_cgetsls_work,
|
LAPACKE_cgetsls_work,
|
||||||
LAPACKE_chbev_2stage,
|
LAPACKE_chbev_2stage,
|
||||||
|
|
@ -3264,8 +3291,14 @@
|
||||||
LAPACKE_csytrs_aa_work,
|
LAPACKE_csytrs_aa_work,
|
||||||
LAPACKE_csytrs_3,
|
LAPACKE_csytrs_3,
|
||||||
LAPACKE_csytrs_3_work,
|
LAPACKE_csytrs_3_work,
|
||||||
|
LAPACKE_dgelq,
|
||||||
|
LAPACKE_dgelq_work,
|
||||||
|
LAPACKE_dgemlq,
|
||||||
|
LAPACKE_dgemlq_work,
|
||||||
LAPACKE_dgemqr,
|
LAPACKE_dgemqr,
|
||||||
LAPACKE_dgemqr_work,
|
LAPACKE_dgemqr_work,
|
||||||
|
LAPACKE_dgeqr,
|
||||||
|
LAPACKE_dgeqr_work,
|
||||||
LAPACKE_dgetsls,
|
LAPACKE_dgetsls,
|
||||||
LAPACKE_dgetsls_work,
|
LAPACKE_dgetsls_work,
|
||||||
LAPACKE_dsbev_2stage,
|
LAPACKE_dsbev_2stage,
|
||||||
|
|
@ -3300,8 +3333,14 @@
|
||||||
LAPACKE_dsytrs_aa_work,
|
LAPACKE_dsytrs_aa_work,
|
||||||
LAPACKE_dsytrs_3,
|
LAPACKE_dsytrs_3,
|
||||||
LAPACKE_dsytrs_3_work,
|
LAPACKE_dsytrs_3_work,
|
||||||
|
LAPACKE_sgelq,
|
||||||
|
LAPACKE_sgelq_work,
|
||||||
|
LAPACKE_sgemlq,
|
||||||
|
LAPACKE_sgemlq_work,
|
||||||
LAPACKE_sgemqr,
|
LAPACKE_sgemqr,
|
||||||
LAPACKE_sgemqr_work,
|
LAPACKE_sgemqr_work,
|
||||||
|
LAPACKE_sgeqr,
|
||||||
|
LAPACKE_sgeqr_work,
|
||||||
LAPACKE_sgetsls,
|
LAPACKE_sgetsls,
|
||||||
LAPACKE_sgetsls_work,
|
LAPACKE_sgetsls_work,
|
||||||
LAPACKE_ssbev_2stage,
|
LAPACKE_ssbev_2stage,
|
||||||
|
|
@ -3336,8 +3375,14 @@
|
||||||
LAPACKE_ssytrs_aa_work,
|
LAPACKE_ssytrs_aa_work,
|
||||||
LAPACKE_ssytrs_3,
|
LAPACKE_ssytrs_3,
|
||||||
LAPACKE_ssytrs_3_work,
|
LAPACKE_ssytrs_3_work,
|
||||||
|
LAPACKE_zgelq,
|
||||||
|
LAPACKE_zgelq_work,
|
||||||
|
LAPACKE_zgemlq,
|
||||||
|
LAPACKE_zgemlq_work,
|
||||||
LAPACKE_zgemqr,
|
LAPACKE_zgemqr,
|
||||||
LAPACKE_zgemqr_work,
|
LAPACKE_zgemqr_work,
|
||||||
|
LAPACKE_zgeqr,
|
||||||
|
LAPACKE_zgeqr_work,
|
||||||
LAPACKE_zgetsls,
|
LAPACKE_zgetsls,
|
||||||
LAPACKE_zgetsls_work,
|
LAPACKE_zgetsls_work,
|
||||||
LAPACKE_zhbev_2stage,
|
LAPACKE_zhbev_2stage,
|
||||||
|
|
@ -3388,6 +3433,62 @@
|
||||||
LAPACKE_zsytrs_aa_work,
|
LAPACKE_zsytrs_aa_work,
|
||||||
LAPACKE_zsytrs_3,
|
LAPACKE_zsytrs_3,
|
||||||
LAPACKE_zsytrs_3_work,
|
LAPACKE_zsytrs_3_work,
|
||||||
|
|
||||||
|
## new function from lapack-3.8.0
|
||||||
|
LAPACKE_chesv_aa_2stage,
|
||||||
|
LAPACKE_chesv_aa_2stage_work,
|
||||||
|
LAPACKE_chetrf_aa_2stage,
|
||||||
|
LAPACKE_chetrf_aa_2stage_work,
|
||||||
|
LAPACKE_chetrs_aa_2stage,
|
||||||
|
LAPACKE_chetrs_aa_2stage_work,
|
||||||
|
LAPACKE_clacrm,
|
||||||
|
LAPACKE_clacrm_work,
|
||||||
|
LAPACKE_clarcm,
|
||||||
|
LAPACKE_clarcm_work,
|
||||||
|
LAPACKE_classq,
|
||||||
|
LAPACKE_classq_work,
|
||||||
|
LAPACKE_csysv_aa_2stage,
|
||||||
|
LAPACKE_csysv_aa_2stage_work,
|
||||||
|
LAPACKE_csytrf_aa_2stage,
|
||||||
|
LAPACKE_csytrf_aa_2stage_work,
|
||||||
|
LAPACKE_csytrs_aa_2stage,
|
||||||
|
LAPACKE_csytrs_aa_2stage_work,
|
||||||
|
LAPACKE_dlassq,
|
||||||
|
LAPACKE_dlassq_work,
|
||||||
|
LAPACKE_dsysv_aa_2stage,
|
||||||
|
LAPACKE_dsysv_aa_2stage_work,
|
||||||
|
LAPACKE_dsytrf_aa_2stage,
|
||||||
|
LAPACKE_dsytrf_aa_2stage_work,
|
||||||
|
LAPACKE_dsytrs_aa_2stage,
|
||||||
|
LAPACKE_dsytrs_aa_2stage_work,
|
||||||
|
LAPACKE_get_nancheck,
|
||||||
|
LAPACKE_set_nancheck,
|
||||||
|
LAPACKE_slassq,
|
||||||
|
LAPACKE_slassq_work,
|
||||||
|
LAPACKE_ssysv_aa_2stage,
|
||||||
|
LAPACKE_ssysv_aa_2stage_work,
|
||||||
|
LAPACKE_ssytrf_aa_2stage,
|
||||||
|
LAPACKE_ssytrf_aa_2stage_work,
|
||||||
|
LAPACKE_ssytrs_aa_2stage,
|
||||||
|
LAPACKE_ssytrs_aa_2stage_work,
|
||||||
|
LAPACKE_zhesv_aa_2stage,
|
||||||
|
LAPACKE_zhesv_aa_2stage_work,
|
||||||
|
LAPACKE_zhetrf_aa_2stage,
|
||||||
|
LAPACKE_zhetrf_aa_2stage_work,
|
||||||
|
LAPACKE_zhetrs_aa_2stage,
|
||||||
|
LAPACKE_zhetrs_aa_2stage_work,
|
||||||
|
LAPACKE_zlacrm,
|
||||||
|
LAPACKE_zlacrm_work,
|
||||||
|
LAPACKE_zlarcm,
|
||||||
|
LAPACKE_zlarcm_work,
|
||||||
|
LAPACKE_zlassq,
|
||||||
|
LAPACKE_zlassq_work,
|
||||||
|
LAPACKE_zsysv_aa_2stage,
|
||||||
|
LAPACKE_zsysv_aa_2stage_work,
|
||||||
|
LAPACKE_zsytrf_aa_2stage,
|
||||||
|
LAPACKE_zsytrf_aa_2stage_work,
|
||||||
|
LAPACKE_zsytrs_aa_2stage,
|
||||||
|
LAPACKE_zsytrs_aa_2stage_work,
|
||||||
);
|
);
|
||||||
|
|
||||||
#These function may need 2 underscores.
|
#These function may need 2 underscores.
|
||||||
|
|
@ -3411,13 +3512,17 @@
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
use File::Spec;
|
||||||
|
use File::Basename;
|
||||||
|
my $dirname = File::Spec->catfile(dirname(dirname(File::Spec->rel2abs(__FILE__))), "lapack-netlib");
|
||||||
|
|
||||||
if ($ARGV[8] == 1) {
|
if ($ARGV[8] == 1) {
|
||||||
#ONLY_CBLAS=1
|
#ONLY_CBLAS=1
|
||||||
@underscore_objs = (@misc_underscore_objs);
|
@underscore_objs = (@misc_underscore_objs);
|
||||||
} elsif ($ARGV[5] == 1) {
|
} elsif ($ARGV[5] == 1) {
|
||||||
#NO_LAPACK=1
|
#NO_LAPACK=1
|
||||||
@underscore_objs = (@blasobjs, @misc_underscore_objs);
|
@underscore_objs = (@blasobjs, @misc_underscore_objs);
|
||||||
} elsif (-d "../lapack-netlib") {
|
} elsif (-d $dirname) {
|
||||||
if ($ARGV[7] == 0) {
|
if ($ARGV[7] == 0) {
|
||||||
# NEED2UNDERSCORES=0
|
# NEED2UNDERSCORES=0
|
||||||
# Don't need 2 underscores
|
# Don't need 2 underscores
|
||||||
|
|
|
||||||
15
getarch.c
15
getarch.c
|
|
@ -134,6 +134,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/* #define FORCE_I6400 */
|
/* #define FORCE_I6400 */
|
||||||
/* #define FORCE_P6600 */
|
/* #define FORCE_P6600 */
|
||||||
/* #define FORCE_P5600 */
|
/* #define FORCE_P5600 */
|
||||||
|
/* #define FORCE_I6500 */
|
||||||
/* #define FORCE_ITANIUM2 */
|
/* #define FORCE_ITANIUM2 */
|
||||||
/* #define FORCE_SPARC */
|
/* #define FORCE_SPARC */
|
||||||
/* #define FORCE_SPARCV7 */
|
/* #define FORCE_SPARCV7 */
|
||||||
|
|
@ -765,6 +766,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#else
|
#else
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FORCE_I6500
|
||||||
|
#define FORCE
|
||||||
|
#define ARCHITECTURE "MIPS"
|
||||||
|
#define SUBARCHITECTURE "I6500"
|
||||||
|
#define SUBDIRNAME "mips64"
|
||||||
|
#define ARCHCONFIG "-DI6500 " \
|
||||||
|
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
|
||||||
|
"-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \
|
||||||
|
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
|
||||||
|
#define LIBNAME "i6500"
|
||||||
|
#define CORENAME "I6500"
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FORCE_ITANIUM2
|
#ifdef FORCE_ITANIUM2
|
||||||
#define FORCE
|
#define FORCE
|
||||||
#define ARCHITECTURE "IA64"
|
#define ARCHITECTURE "IA64"
|
||||||
|
|
|
||||||
|
|
@ -68,8 +68,12 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#ifdef COMPLEX
|
||||||
|
FLOAT CNAME(blasint n, void *vx, blasint incx){
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
#else
|
||||||
FLOAT CNAME(blasint n, FLOAT *x, blasint incx){
|
FLOAT CNAME(blasint n, FLOAT *x, blasint incx){
|
||||||
|
#endif
|
||||||
|
|
||||||
FLOAT ret;
|
FLOAT ret;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,13 @@ void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#ifdef COMPLEX
|
||||||
|
void CNAME(blasint n, void *vx, blasint incx, void *vy, blasint incy){
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
FLOAT *y = (FLOAT*) vy;
|
||||||
|
#else
|
||||||
void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){
|
void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){
|
||||||
|
#endif
|
||||||
|
|
||||||
PRINT_DEBUG_CNAME;
|
PRINT_DEBUG_CNAME;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,17 +220,22 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS
|
||||||
blasint m, blasint n, blasint k,
|
blasint m, blasint n, blasint k,
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
FLOAT alpha,
|
FLOAT alpha,
|
||||||
#else
|
|
||||||
FLOAT *alpha,
|
|
||||||
#endif
|
|
||||||
FLOAT *a, blasint lda,
|
FLOAT *a, blasint lda,
|
||||||
FLOAT *b, blasint ldb,
|
FLOAT *b, blasint ldb,
|
||||||
#ifndef COMPLEX
|
|
||||||
FLOAT beta,
|
FLOAT beta,
|
||||||
#else
|
|
||||||
FLOAT *beta,
|
|
||||||
#endif
|
|
||||||
FLOAT *c, blasint ldc) {
|
FLOAT *c, blasint ldc) {
|
||||||
|
#else
|
||||||
|
void *valpha,
|
||||||
|
void *va, blasint lda,
|
||||||
|
void *vb, blasint ldb,
|
||||||
|
void *vbeta,
|
||||||
|
void *vc, blasint ldc) {
|
||||||
|
FLOAT *alpha = (FLOAT*) valpha;
|
||||||
|
FLOAT *beta = (FLOAT*) vbeta;
|
||||||
|
FLOAT *a = (FLOAT*) va;
|
||||||
|
FLOAT *b = (FLOAT*) vb;
|
||||||
|
FLOAT *c = (FLOAT*) vc;
|
||||||
|
#endif
|
||||||
|
|
||||||
blas_arg_t args;
|
blas_arg_t args;
|
||||||
int transa, transb;
|
int transa, transb;
|
||||||
|
|
|
||||||
|
|
@ -146,8 +146,12 @@ blasint NAME(blasint *N, FLOAT *x, blasint *INCX){
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#ifdef COMPLEX
|
||||||
|
CBLAS_INDEX CNAME(blasint n, void *vx, blasint incx){
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
#else
|
||||||
CBLAS_INDEX CNAME(blasint n, FLOAT *x, blasint incx){
|
CBLAS_INDEX CNAME(blasint n, FLOAT *x, blasint incx){
|
||||||
|
#endif
|
||||||
|
|
||||||
CBLAS_INDEX ret;
|
CBLAS_INDEX ret;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,12 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#ifdef COMPLEX
|
||||||
|
FLOAT CNAME(blasint n, void *vx, blasint incx){
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
#else
|
||||||
FLOAT CNAME(blasint n, FLOAT *x, blasint incx){
|
FLOAT CNAME(blasint n, FLOAT *x, blasint incx){
|
||||||
|
#endif
|
||||||
|
|
||||||
FLOAT ret;
|
FLOAT ret;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -228,17 +228,22 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo,
|
||||||
blasint m, blasint n,
|
blasint m, blasint n,
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
FLOAT alpha,
|
FLOAT alpha,
|
||||||
#else
|
|
||||||
FLOAT *alpha,
|
|
||||||
#endif
|
|
||||||
FLOAT *a, blasint lda,
|
FLOAT *a, blasint lda,
|
||||||
FLOAT *b, blasint ldb,
|
FLOAT *b, blasint ldb,
|
||||||
#ifndef COMPLEX
|
|
||||||
FLOAT beta,
|
FLOAT beta,
|
||||||
#else
|
|
||||||
FLOAT *beta,
|
|
||||||
#endif
|
|
||||||
FLOAT *c, blasint ldc) {
|
FLOAT *c, blasint ldc) {
|
||||||
|
#else
|
||||||
|
void *valpha,
|
||||||
|
void *va, blasint lda,
|
||||||
|
void *vb, blasint ldb,
|
||||||
|
void *vbeta,
|
||||||
|
void *vc, blasint ldc) {
|
||||||
|
FLOAT *alpha = (FLOAT*) valpha;
|
||||||
|
FLOAT *beta = (FLOAT*) vbeta;
|
||||||
|
FLOAT *a = (FLOAT*) va;
|
||||||
|
FLOAT *b = (FLOAT*) vb;
|
||||||
|
FLOAT *c = (FLOAT*) vc;
|
||||||
|
#endif
|
||||||
|
|
||||||
blas_arg_t args;
|
blas_arg_t args;
|
||||||
int side, uplo;
|
int side, uplo;
|
||||||
|
|
|
||||||
|
|
@ -185,17 +185,34 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr
|
||||||
blasint n, blasint k,
|
blasint n, blasint k,
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
FLOAT alpha,
|
FLOAT alpha,
|
||||||
#else
|
|
||||||
FLOAT *alpha,
|
|
||||||
#endif
|
|
||||||
FLOAT *a, blasint lda,
|
FLOAT *a, blasint lda,
|
||||||
FLOAT *b, blasint ldb,
|
FLOAT *b, blasint ldb,
|
||||||
|
#else
|
||||||
|
void *valpha,
|
||||||
|
void *va, blasint lda,
|
||||||
|
void *vb, blasint ldb,
|
||||||
|
#endif
|
||||||
#if !defined(COMPLEX) || defined(HEMM)
|
#if !defined(COMPLEX) || defined(HEMM)
|
||||||
FLOAT beta,
|
FLOAT beta,
|
||||||
#else
|
#else
|
||||||
FLOAT *beta,
|
void *vbeta,
|
||||||
|
#endif
|
||||||
|
#ifndef COMPLEX
|
||||||
|
FLOAT *c,
|
||||||
|
#else
|
||||||
|
void *vc,
|
||||||
|
#endif
|
||||||
|
blasint ldc) {
|
||||||
|
|
||||||
|
#ifdef COMPLEX
|
||||||
|
FLOAT* alpha = (FLOAT*) valpha;
|
||||||
|
#if !defined(HEMM)
|
||||||
|
FLOAT* beta = (FLOAT*) vbeta;
|
||||||
|
#endif
|
||||||
|
FLOAT* a = (FLOAT*) va;
|
||||||
|
FLOAT* b = (FLOAT*) vb;
|
||||||
|
FLOAT* c = (FLOAT*) vc;
|
||||||
#endif
|
#endif
|
||||||
FLOAT *c, blasint ldc) {
|
|
||||||
|
|
||||||
blas_arg_t args;
|
blas_arg_t args;
|
||||||
int uplo, trans;
|
int uplo, trans;
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ void NAME(char *UPLO, char *TRANS,
|
||||||
FLOAT *sa, *sb;
|
FLOAT *sa, *sb;
|
||||||
|
|
||||||
#ifdef SMP
|
#ifdef SMP
|
||||||
|
#ifdef USE_SIMPLE_THREADED_LEVEL3
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
#ifdef XDOUBLE
|
#ifdef XDOUBLE
|
||||||
int mode = BLAS_XDOUBLE | BLAS_REAL;
|
int mode = BLAS_XDOUBLE | BLAS_REAL;
|
||||||
|
|
@ -118,6 +119,7 @@ void NAME(char *UPLO, char *TRANS,
|
||||||
int mode = BLAS_SINGLE | BLAS_COMPLEX;
|
int mode = BLAS_SINGLE | BLAS_COMPLEX;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
blasint info;
|
blasint info;
|
||||||
|
|
@ -188,15 +190,32 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr
|
||||||
#if !defined(COMPLEX) || defined(HEMM)
|
#if !defined(COMPLEX) || defined(HEMM)
|
||||||
FLOAT alpha,
|
FLOAT alpha,
|
||||||
#else
|
#else
|
||||||
FLOAT *alpha,
|
void *valpha,
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(COMPLEX)
|
||||||
FLOAT *a, blasint lda,
|
FLOAT *a, blasint lda,
|
||||||
|
#else
|
||||||
|
void *va, blasint lda,
|
||||||
|
#endif
|
||||||
#if !defined(COMPLEX) || defined(HEMM)
|
#if !defined(COMPLEX) || defined(HEMM)
|
||||||
FLOAT beta,
|
FLOAT beta,
|
||||||
#else
|
#else
|
||||||
FLOAT *beta,
|
void *vbeta,
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(COMPLEX)
|
||||||
FLOAT *c, blasint ldc) {
|
FLOAT *c, blasint ldc) {
|
||||||
|
#else
|
||||||
|
void *vc, blasint ldc) {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef COMPLEX
|
||||||
|
#if !defined(HEMM)
|
||||||
|
FLOAT* alpha = (FLOAT*) valpha;
|
||||||
|
FLOAT* beta = (FLOAT*) vbeta;
|
||||||
|
#endif
|
||||||
|
FLOAT* a = (FLOAT*) va;
|
||||||
|
FLOAT* c = (FLOAT*) vc;
|
||||||
|
#endif
|
||||||
|
|
||||||
blas_arg_t args;
|
blas_arg_t args;
|
||||||
int uplo, trans;
|
int uplo, trans;
|
||||||
|
|
@ -206,6 +225,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr
|
||||||
FLOAT *sa, *sb;
|
FLOAT *sa, *sb;
|
||||||
|
|
||||||
#ifdef SMP
|
#ifdef SMP
|
||||||
|
#ifdef USE_SIMPLE_THREADED_LEVEL3
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
#ifdef XDOUBLE
|
#ifdef XDOUBLE
|
||||||
int mode = BLAS_XDOUBLE | BLAS_REAL;
|
int mode = BLAS_XDOUBLE | BLAS_REAL;
|
||||||
|
|
@ -223,6 +243,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr
|
||||||
int mode = BLAS_SINGLE | BLAS_COMPLEX;
|
int mode = BLAS_SINGLE | BLAS_COMPLEX;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PRINT_DEBUG_CNAME;
|
PRINT_DEBUG_CNAME;
|
||||||
|
|
@ -323,13 +344,14 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr
|
||||||
sb = (FLOAT *)(((BLASLONG)sa + ((GEMM_P * GEMM_Q * COMPSIZE * SIZE + GEMM_ALIGN) & ~GEMM_ALIGN)) + GEMM_OFFSET_B);
|
sb = (FLOAT *)(((BLASLONG)sa + ((GEMM_P * GEMM_Q * COMPSIZE * SIZE + GEMM_ALIGN) & ~GEMM_ALIGN)) + GEMM_OFFSET_B);
|
||||||
|
|
||||||
#ifdef SMP
|
#ifdef SMP
|
||||||
|
#ifdef USE_SIMPLE_THREADED_LEVEL3
|
||||||
if (!trans){
|
if (!trans){
|
||||||
mode |= (BLAS_TRANSA_N | BLAS_TRANSB_T);
|
mode |= (BLAS_TRANSA_N | BLAS_TRANSB_T);
|
||||||
} else {
|
} else {
|
||||||
mode |= (BLAS_TRANSA_T | BLAS_TRANSB_N);
|
mode |= (BLAS_TRANSA_T | BLAS_TRANSB_N);
|
||||||
}
|
}
|
||||||
|
|
||||||
mode |= (uplo << BLAS_UPLO_SHIFT);
|
mode |= (uplo << BLAS_UPLO_SHIFT);
|
||||||
|
#endif
|
||||||
|
|
||||||
args.common = NULL;
|
args.common = NULL;
|
||||||
args.nthreads = num_cpu_avail(3);
|
args.nthreads = num_cpu_avail(3);
|
||||||
|
|
|
||||||
|
|
@ -135,10 +135,17 @@ void NAME(char *UPLO, char *TRANS, char *DIAG,
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#ifndef COMPLEX
|
||||||
void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
|
void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
|
||||||
enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
|
enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
|
||||||
blasint n, FLOAT *a, FLOAT *x, blasint incx) {
|
blasint n, FLOAT *a, FLOAT *x, blasint incx) {
|
||||||
|
#else
|
||||||
|
void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
|
||||||
|
enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
|
||||||
|
blasint n, void *va, void *vx, blasint incx) {
|
||||||
|
FLOAT *a = (FLOAT*) va;
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
#endif
|
||||||
|
|
||||||
int trans, uplo, unit;
|
int trans, uplo, unit;
|
||||||
blasint info;
|
blasint info;
|
||||||
|
|
|
||||||
|
|
@ -218,7 +218,10 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
|
||||||
buffer = (FLOAT *)blas_memory_alloc(1);
|
buffer = (FLOAT *)blas_memory_alloc(1);
|
||||||
|
|
||||||
#ifdef SMP
|
#ifdef SMP
|
||||||
nthreads = num_cpu_avail(2);
|
/* nthreads = num_cpu_avail(2);
|
||||||
|
|
||||||
|
FIXME trmv_thread was found to be broken, see issue 1332 */
|
||||||
|
nthreads = 1;
|
||||||
|
|
||||||
if (nthreads == 1) {
|
if (nthreads == 1) {
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -210,11 +210,16 @@ void CNAME(enum CBLAS_ORDER order,
|
||||||
blasint m, blasint n,
|
blasint m, blasint n,
|
||||||
#ifndef COMPLEX
|
#ifndef COMPLEX
|
||||||
FLOAT alpha,
|
FLOAT alpha,
|
||||||
#else
|
|
||||||
FLOAT *alpha,
|
|
||||||
#endif
|
|
||||||
FLOAT *a, blasint lda,
|
FLOAT *a, blasint lda,
|
||||||
FLOAT *b, blasint ldb) {
|
FLOAT *b, blasint ldb) {
|
||||||
|
#else
|
||||||
|
void *valpha,
|
||||||
|
void *va, blasint lda,
|
||||||
|
void *vb, blasint ldb) {
|
||||||
|
FLOAT *alpha = (FLOAT*) valpha;
|
||||||
|
FLOAT *a = (FLOAT*) va;
|
||||||
|
FLOAT *b = (FLOAT*) vb;
|
||||||
|
#endif
|
||||||
|
|
||||||
blas_arg_t args;
|
blas_arg_t args;
|
||||||
int side, uplo, trans, unit;
|
int side, uplo, trans, unit;
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,12 @@ void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *BETA, FLOAT
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
void CNAME(blasint n, FLOAT *ALPHA, FLOAT *x, blasint incx, FLOAT *BETA, FLOAT *y, blasint incy)
|
void CNAME(blasint n, void *VALPHA, void *vx, blasint incx, void *VBETA, void *vy, blasint incy)
|
||||||
{
|
{
|
||||||
|
FLOAT* ALPHA = (FLOAT*) VALPHA;
|
||||||
|
FLOAT* BETA = (FLOAT*) VBETA;
|
||||||
|
FLOAT* x = (FLOAT*) vx;
|
||||||
|
FLOAT* y = (FLOAT*) vy;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,9 +51,14 @@ void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *y, blasint *
|
||||||
blasint incy = *INCY;
|
blasint incy = *INCY;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#ifdef COMPLEX
|
||||||
|
void CNAME(blasint n, void *VALPHA, void *vx, blasint incx, void *vy, blasint incy){
|
||||||
|
FLOAT *ALPHA = (FLOAT*) VALPHA;
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
FLOAT *y = (FLOAT*) vy;
|
||||||
|
#else
|
||||||
void CNAME(blasint n, FLOAT *ALPHA, FLOAT *x, blasint incx, FLOAT *y, blasint incy){
|
void CNAME(blasint n, FLOAT *ALPHA, FLOAT *x, blasint incx, FLOAT *y, blasint incy){
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FLOAT alpha_r = *(ALPHA + 0);
|
FLOAT alpha_r = *(ALPHA + 0);
|
||||||
|
|
|
||||||
|
|
@ -148,13 +148,16 @@ OPENBLAS_COMPLEX_FLOAT NAME( blasint *N, FLOAT *x, blasin
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#ifdef FORCE_USE_STACK
|
#ifdef FORCE_USE_STACK
|
||||||
void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy, OPENBLAS_COMPLEX_FLOAT *result){
|
void CNAME(blasint n, void *vx, blasint incx, void *vy, blasint incy, void* vresult){
|
||||||
|
OPENBLAS_COMPLEX_FLOAT *result= (OPENBLAS_COMPLEX_FLOAT*)vresult;
|
||||||
#else
|
#else
|
||||||
OPENBLAS_COMPLEX_FLOAT CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){
|
OPENBLAS_COMPLEX_FLOAT CNAME(blasint n, void *vx, blasint incx, void *vy, blasint incy){
|
||||||
|
|
||||||
OPENBLAS_COMPLEX_FLOAT ret;
|
OPENBLAS_COMPLEX_FLOAT ret;
|
||||||
OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
|
OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0);
|
||||||
#endif
|
#endif
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
FLOAT *y = (FLOAT*) vy;
|
||||||
|
|
||||||
PRINT_DEBUG_CNAME;
|
PRINT_DEBUG_CNAME;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,11 +149,17 @@ void CNAME(enum CBLAS_ORDER order,
|
||||||
enum CBLAS_TRANSPOSE TransA,
|
enum CBLAS_TRANSPOSE TransA,
|
||||||
blasint m, blasint n,
|
blasint m, blasint n,
|
||||||
blasint ku, blasint kl,
|
blasint ku, blasint kl,
|
||||||
FLOAT *ALPHA,
|
void *VALPHA,
|
||||||
FLOAT *a, blasint lda,
|
void *va, blasint lda,
|
||||||
FLOAT *x, blasint incx,
|
void *vx, blasint incx,
|
||||||
FLOAT *BETA,
|
void *VBETA,
|
||||||
FLOAT *y, blasint incy){
|
void *vy, blasint incy){
|
||||||
|
|
||||||
|
FLOAT* ALPHA = (FLOAT*) VALPHA;
|
||||||
|
FLOAT* BETA = (FLOAT*) VBETA;
|
||||||
|
FLOAT* a = (FLOAT*) va;
|
||||||
|
FLOAT* x = (FLOAT*) vx;
|
||||||
|
FLOAT* y = (FLOAT*) vy;
|
||||||
|
|
||||||
FLOAT alpha_r = ALPHA[0];
|
FLOAT alpha_r = ALPHA[0];
|
||||||
FLOAT alpha_i = ALPHA[1];
|
FLOAT alpha_i = ALPHA[1];
|
||||||
|
|
|
||||||
|
|
@ -134,12 +134,17 @@ void NAME(char *TRANS, blasint *M, blasint *N,
|
||||||
void CNAME(enum CBLAS_ORDER order,
|
void CNAME(enum CBLAS_ORDER order,
|
||||||
enum CBLAS_TRANSPOSE TransA,
|
enum CBLAS_TRANSPOSE TransA,
|
||||||
blasint m, blasint n,
|
blasint m, blasint n,
|
||||||
FLOAT *ALPHA,
|
void *VALPHA,
|
||||||
FLOAT *a, blasint lda,
|
void *va, blasint lda,
|
||||||
FLOAT *x, blasint incx,
|
void *vx, blasint incx,
|
||||||
FLOAT *BETA,
|
void *VBETA,
|
||||||
FLOAT *y, blasint incy){
|
void *vy, blasint incy){
|
||||||
|
|
||||||
|
FLOAT *ALPHA = (FLOAT*) VALPHA;
|
||||||
|
FLOAT *a = (FLOAT*) va;
|
||||||
|
FLOAT *x = (FLOAT*) vx;
|
||||||
|
FLOAT *BETA = (FLOAT*) VBETA;
|
||||||
|
FLOAT *y = (FLOAT*) vy;
|
||||||
FLOAT *buffer;
|
FLOAT *buffer;
|
||||||
blasint lenx, leny;
|
blasint lenx, leny;
|
||||||
int trans, buffer_size;
|
int trans, buffer_size;
|
||||||
|
|
|
||||||
|
|
@ -141,10 +141,15 @@ void NAME(blasint *M, blasint *N, FLOAT *Alpha,
|
||||||
|
|
||||||
void CNAME(enum CBLAS_ORDER order,
|
void CNAME(enum CBLAS_ORDER order,
|
||||||
blasint m, blasint n,
|
blasint m, blasint n,
|
||||||
FLOAT *Alpha,
|
void *VAlpha,
|
||||||
FLOAT *x, blasint incx,
|
void *vx, blasint incx,
|
||||||
FLOAT *y, blasint incy,
|
void *vy, blasint incy,
|
||||||
FLOAT *a, blasint lda) {
|
void *va, blasint lda) {
|
||||||
|
|
||||||
|
FLOAT* Alpha = (FLOAT*) VAlpha;
|
||||||
|
FLOAT* a = (FLOAT*) va;
|
||||||
|
FLOAT* x = (FLOAT*) vx;
|
||||||
|
FLOAT* y = (FLOAT*) vy;
|
||||||
|
|
||||||
FLOAT alpha_r = Alpha[0];
|
FLOAT alpha_r = Alpha[0];
|
||||||
FLOAT alpha_i = Alpha[1];
|
FLOAT alpha_i = Alpha[1];
|
||||||
|
|
|
||||||
|
|
@ -125,11 +125,17 @@ void NAME(char *UPLO, blasint *N, blasint *K, FLOAT *ALPHA, FLOAT *a, blasint *
|
||||||
void CNAME(enum CBLAS_ORDER order,
|
void CNAME(enum CBLAS_ORDER order,
|
||||||
enum CBLAS_UPLO Uplo,
|
enum CBLAS_UPLO Uplo,
|
||||||
blasint n, blasint k,
|
blasint n, blasint k,
|
||||||
FLOAT *ALPHA,
|
void *VALPHA,
|
||||||
FLOAT *a, blasint lda,
|
void *va, blasint lda,
|
||||||
FLOAT *x, blasint incx,
|
void *vx, blasint incx,
|
||||||
FLOAT *BETA,
|
void *VBETA,
|
||||||
FLOAT *y, blasint incy){
|
void *vy, blasint incy){
|
||||||
|
|
||||||
|
FLOAT* ALPHA = (FLOAT*) VALPHA;
|
||||||
|
FLOAT* BETA = (FLOAT*) VBETA;
|
||||||
|
FLOAT* a = (FLOAT*) va;
|
||||||
|
FLOAT* x = (FLOAT*) vx;
|
||||||
|
FLOAT* y = (FLOAT*) vy;
|
||||||
|
|
||||||
FLOAT alpha_r = ALPHA[0];
|
FLOAT alpha_r = ALPHA[0];
|
||||||
FLOAT alpha_i = ALPHA[1];
|
FLOAT alpha_i = ALPHA[1];
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue