The user can use char * openblas_get_config() or char * openblas_get_corename().
/*Get the build configure on runtime.*/
char* openblas_get_config(void);
+/*Get the CPU corename on runtime.*/
+char* openblas_get_corename(void);
+
/* Get the parallelization type which is used by OpenBLAS */
int openblas_get_parallel(void);
/* OpenBLAS is compiled for sequential use */
#include "common.h"
+#include <string.h>
+
static char* openblas_config_str=""
#ifdef USE64BITINT
"USE64BITINT "
#ifdef NO_AFFINITY
"NO_AFFINITY "
#endif
+#ifndef DYNAMIC_ARCH
+ CHAR_CORENAME
+#endif
;
+#ifdef DYNAMIC_ARCH
+char *gotoblas_corename();
+static char tmp_config_str[256];
+#endif
+
+
char* CNAME() {
+#ifndef DYNAMIC_ARCH
return openblas_config_str;
+#else
+ strcpy(tmp_config_str, openblas_config_str);
+ strcat(tmp_config_str, gotoblas_corename());
+ return tmp_config_str;
+#endif
}
+
+char* openblas_get_corename() {
+#ifndef DYNAMIC_ARCH
+ return CHAR_CORENAME;
+#else
+ return gotoblas_corename();
+#endif
+}
@misc_no_underscore_objs = (
goto_set_num_threads,
openblas_get_config,
+ openblas_get_corename,
);
@misc_underscore_objs = (
#else
get_cpuconfig();
#endif
+
+#ifdef FORCE
+ printf("#define CHAR_CORENAME \"%s\"\n", CORENAME);
+#else
+#if defined(__i386__) || defined(__x86_64__) || defined(POWER) || defined(__mips__) || defined(__arm__)
+ printf("#define CHAR_CORENAME \"%s\"\n", get_corename());
+#endif
+#endif
+
break;
case '2' : /* SMP */