parallelization model is used by OpenBLAS.tags/v0.2.7
| @@ -16,6 +16,16 @@ void goto_set_num_threads(int num_threads); | |||||
| /*Get the build configure on runtime.*/ | /*Get the build configure on runtime.*/ | ||||
| char* openblas_get_config(void); | char* openblas_get_config(void); | ||||
| /* Get the parallelization type which is used by OpenBLAS */ | |||||
| int openblas_get_parallel(void); | |||||
| /* OpenBLAS is compiled for sequential use */ | |||||
| #define OPENBLAS_SEQUENTIAL 0 | |||||
| /* OpenBLAS is compiled using normal threading model */ | |||||
| #define OPENBLAS_THREAD 1 | |||||
| /* OpenBLAS is compiled using OpenMP threading model */ | |||||
| #define OPENBLAS_OPENMP 2 | |||||
| #define CBLAS_INDEX size_t | #define CBLAS_INDEX size_t | ||||
| typedef enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102} CBLAS_ORDER; | typedef enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102} CBLAS_ORDER; | ||||
| @@ -1,7 +1,7 @@ | |||||
| TOPDIR = ../.. | TOPDIR = ../.. | ||||
| include ../../Makefile.system | include ../../Makefile.system | ||||
| COMMONOBJS = memory.$(SUFFIX) xerbla.$(SUFFIX) c_abs.$(SUFFIX) z_abs.$(SUFFIX) openblas_set_num_threads.$(SUFFIX) openblas_get_config.$(SUFFIX) | |||||
| COMMONOBJS = memory.$(SUFFIX) xerbla.$(SUFFIX) c_abs.$(SUFFIX) z_abs.$(SUFFIX) openblas_set_num_threads.$(SUFFIX) openblas_get_config.$(SUFFIX) openblas_get_parallel.$(SUFFIX) | |||||
| COMMONOBJS += slamch.$(SUFFIX) slamc3.$(SUFFIX) dlamch.$(SUFFIX) dlamc3.$(SUFFIX) | COMMONOBJS += slamch.$(SUFFIX) slamc3.$(SUFFIX) dlamch.$(SUFFIX) dlamc3.$(SUFFIX) | ||||
| @@ -106,6 +106,9 @@ openblas_set_num_threads.$(SUFFIX) : openblas_set_num_threads.c | |||||
| openblas_get_config.$(SUFFIX) : openblas_get_config.c | openblas_get_config.$(SUFFIX) : openblas_get_config.c | ||||
| $(CC) $(CFLAGS) -c $< -o $(@F) | $(CC) $(CFLAGS) -c $< -o $(@F) | ||||
| openblas_get_parallel.$(SUFFIX) : openblas_get_parallel.c | |||||
| $(CC) $(CFLAGS) -c $< -o $(@F) | |||||
| blasL1thread.$(SUFFIX) : blas_l1_thread.c ../../common.h ../../common_thread.h | blasL1thread.$(SUFFIX) : blas_l1_thread.c ../../common.h ../../common_thread.h | ||||
| $(CC) $(CFLAGS) -c $< -o $(@F) | $(CC) $(CFLAGS) -c $< -o $(@F) | ||||
| @@ -0,0 +1,52 @@ | |||||
| /***************************************************************************** | |||||
| Copyright (c) 2013 Martin Koehler, grisuthedragon@users.github.com | |||||
| All rights reserved. | |||||
| Redistribution and use in source and binary forms, with or without | |||||
| modification, are permitted provided that the following conditions are | |||||
| met: | |||||
| 1. Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| 2. Redistributions in binary form must reproduce the above copyright | |||||
| notice, this list of conditions and the following disclaimer in | |||||
| the documentation and/or other materials provided with the | |||||
| distribution. | |||||
| 3. Neither the name of the ISCAS nor the names of its contributors may | |||||
| be used to endorse or promote products derived from this software | |||||
| without specific prior written permission. | |||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||||
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |||||
| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |||||
| 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 | |||||
| USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| **********************************************************************************/ | |||||
| #include "common.h" | |||||
| #if defined(USE_OPENMP) | |||||
| static int parallel = 2 ; | |||||
| #elif defined(SMP_SERVER) | |||||
| static int parallel = 1; | |||||
| #else | |||||
| static int parallel = 0; | |||||
| #endif | |||||
| int CNAME() { | |||||
| return parallel; | |||||
| } | |||||
| int NAME() { | |||||
| return parallel; | |||||
| } | |||||
| @@ -74,11 +74,11 @@ | |||||
| @misc_no_underscore_objs = ( | @misc_no_underscore_objs = ( | ||||
| openblas_set_num_threads, goto_set_num_threads, | openblas_set_num_threads, goto_set_num_threads, | ||||
| openblas_get_config, | |||||
| openblas_get_config, openblas_get_parallel | |||||
| ); | ); | ||||
| @misc_underscore_objs = ( | @misc_underscore_objs = ( | ||||
| openblas_set_num_threads, | |||||
| openblas_set_num_threads,openblas_get_parallel | |||||
| ); | ); | ||||
| @lapackobjs = ( | @lapackobjs = ( | ||||
| @@ -0,0 +1,18 @@ | |||||
| #include "../cblas.h" | |||||
| int main() { | |||||
| int th_model = openblas_get_parallel(); | |||||
| switch(th_model) { | |||||
| case OPENBLAS_SEQUENTIAL: | |||||
| printf("OpenBLAS is compiled sequentially.\n"); | |||||
| break; | |||||
| case OPENBLAS_THREAD: | |||||
| printf("OpenBLAS is compiled using the normal threading model\n"); | |||||
| break; | |||||
| case OPENBLAS_OPENMP: | |||||
| printf("OpenBLAS is compiled using OpenMP\n"); | |||||
| break; | |||||
| } | |||||
| return 0; | |||||
| } | |||||