@@ -91,3 +91,4 @@ benchmark/*.goto | |||||
benchmark/smallscaling | benchmark/smallscaling | ||||
CMakeCache.txt | CMakeCache.txt | ||||
CMakeFiles/* | CMakeFiles/* | ||||
.vscode |
@@ -212,7 +212,8 @@ Please note that it is not possible to combine support for different architectur | |||||
- **Android**: Supported by the community. Please read <https://github.com/xianyi/OpenBLAS/wiki/How-to-build-OpenBLAS-for-Android>. | - **Android**: Supported by the community. Please read <https://github.com/xianyi/OpenBLAS/wiki/How-to-build-OpenBLAS-for-Android>. | ||||
- **AIX**: Supported on PPC up to POWER8 | - **AIX**: Supported on PPC up to POWER8 | ||||
- **Haiku**: Supported by the community. We don't actively test the library on this OS. | - **Haiku**: Supported by the community. We don't actively test the library on this OS. | ||||
- **SunOS**: Supported by the community. We don't actively test the library on this OS: | |||||
- **SunOS**: Supported by the community. We don't actively test the library on this OS. | |||||
- **Cortex-M**: Supported by the community. Please read <https://github.com/xianyi/OpenBLAS/wiki/How-to-use-OpenBLAS-on-Cortex-M>. | |||||
## Usage | ## Usage | ||||
@@ -233,6 +233,11 @@ if (BINARY64) | |||||
endif () | endif () | ||||
endif () | endif () | ||||
if(EMBEDDED) | |||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DOS_EMBEDDED") | |||||
set(CCOMMON_OPT "${CCOMMON_OPT} -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16") | |||||
endif() | |||||
if (NEED_PIC) | if (NEED_PIC) | ||||
if (${CMAKE_C_COMPILER} STREQUAL "IBM") | if (${CMAKE_C_COMPILER} STREQUAL "IBM") | ||||
set(CCOMMON_OPT "${CCOMMON_OPT} -qpic=large") | set(CCOMMON_OPT "${CCOMMON_OPT} -qpic=large") | ||||
@@ -122,7 +122,7 @@ extern "C" { | |||||
#define ATOM GOTO_ATOM | #define ATOM GOTO_ATOM | ||||
#undef GOTO_ATOM | #undef GOTO_ATOM | ||||
#endif | #endif | ||||
#else | |||||
#elif !defined(OS_EMBEDDED) | |||||
#include <sys/mman.h> | #include <sys/mman.h> | ||||
#ifndef NO_SYSV_IPC | #ifndef NO_SYSV_IPC | ||||
#include <sys/shm.h> | #include <sys/shm.h> | ||||
@@ -134,6 +134,9 @@ extern "C" { | |||||
#if defined(SMP) || defined(USE_LOCKING) | #if defined(SMP) || defined(USE_LOCKING) | ||||
#include <pthread.h> | #include <pthread.h> | ||||
#endif | #endif | ||||
#else | |||||
#include <time.h> | |||||
#include <math.h> | |||||
#endif | #endif | ||||
#if defined(OS_SUNOS) | #if defined(OS_SUNOS) | ||||
@@ -488,10 +491,12 @@ static inline unsigned long long rpcc(void){ | |||||
struct timespec ts; | struct timespec ts; | ||||
clock_gettime(CLOCK_MONOTONIC, &ts); | clock_gettime(CLOCK_MONOTONIC, &ts); | ||||
return (unsigned long long)ts.tv_sec * 1000000000ull + ts.tv_nsec; | return (unsigned long long)ts.tv_sec * 1000000000ull + ts.tv_nsec; | ||||
#else | |||||
#elif !defined(OS_EMBEDDED) | |||||
struct timeval tv; | struct timeval tv; | ||||
gettimeofday(&tv,NULL); | gettimeofday(&tv,NULL); | ||||
return (unsigned long long)tv.tv_sec * 1000000000ull + tv.tv_usec * 1000; | return (unsigned long long)tv.tv_sec * 1000000000ull + tv.tv_usec * 1000; | ||||
#else | |||||
return 0; | |||||
#endif | #endif | ||||
} | } | ||||
#define RPCC_DEFINED | #define RPCC_DEFINED | ||||
@@ -521,6 +526,10 @@ static void __inline blas_lock(volatile BLASULONG *address){ | |||||
#include "common_linux.h" | #include "common_linux.h" | ||||
#endif | #endif | ||||
#ifdef OS_EMBEDDED | |||||
#define DTB_DEFAULT_ENTRIES 64 | |||||
#endif | |||||
#define MMAP_ACCESS (PROT_READ | PROT_WRITE) | #define MMAP_ACCESS (PROT_READ | PROT_WRITE) | ||||
#ifdef __NetBSD__ | #ifdef __NetBSD__ | ||||
@@ -1668,16 +1668,23 @@ void gotoblas_dummy_for_PGI(void) { | |||||
#ifndef MEM_LARGE_PAGES | #ifndef MEM_LARGE_PAGES | ||||
#define MEM_LARGE_PAGES 0x20000000 | #define MEM_LARGE_PAGES 0x20000000 | ||||
#endif | #endif | ||||
#else | |||||
#elif !defined(OS_EMBEDDED) | |||||
#define ALLOC_MMAP | #define ALLOC_MMAP | ||||
#define ALLOC_MALLOC | #define ALLOC_MALLOC | ||||
#else | |||||
#define ALLOC_MALLOC | |||||
inline int puts(const char *str) { return 0; } | |||||
inline int printf(const char *format, ...) { return 0; } | |||||
inline char *getenv(const char *name) { return ""; } | |||||
inline int atoi(const char *str) { return 0; } | |||||
#endif | #endif | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <fcntl.h> | #include <fcntl.h> | ||||
#if !defined(OS_WINDOWS) || defined(OS_CYGWIN_NT) | |||||
#if (!defined(OS_WINDOWS) || defined(OS_CYGWIN_NT)) && !defined(OS_EMBEDDED) | |||||
#include <sys/mman.h> | #include <sys/mman.h> | ||||
#ifndef NO_SYSV_IPC | #ifndef NO_SYSV_IPC | ||||
#include <sys/shm.h> | #include <sys/shm.h> | ||||