Merge branch 'develop'
This commit is contained in:
		
						commit
						3a26470fb7
					
				| 
						 | 
					@ -79,7 +79,7 @@ If you compile this lib with USE_OPENMP=1, you should set OMP_NUM_THREADS enviro
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Set the number of threads on runtime. 
 | 
					### Set the number of threads on runtime. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
We provided the below functions to controll the number of threads on runtime. So far, we didn't support changing the number of threads on Windows. On Windows, these functions are dummy.
 | 
					We provided the below functions to controll the number of threads on runtime.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void goto_set_num_threads(int num_threads);
 | 
					    void goto_set_num_threads(int num_threads);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,6 +97,7 @@ OpenBLAS users mailing list: http://list.rdcps.ac.cn/mailman/listinfo/openblas
 | 
				
			||||||
Please see Changelog.txt to obtain the differences between GotoBLAS2 1.13 BSD version.
 | 
					Please see Changelog.txt to obtain the differences between GotoBLAS2 1.13 BSD version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Troubleshooting
 | 
					## Troubleshooting
 | 
				
			||||||
 | 
					* Please read [Faq](https://github.com/xianyi/OpenBLAS/wiki/Faq) at first.
 | 
				
			||||||
* Please use gcc version 4.6 and above to compile Sandy Bridge AVX kernels on Linux/MingW/BSD.
 | 
					* Please use gcc version 4.6 and above to compile Sandy Bridge AVX kernels on Linux/MingW/BSD.
 | 
				
			||||||
* Please use Clang version 3.1 and above to compile the library on Sandy Bridge microarchitecture. The Clang 3.0 will generate the wrong AVX binary code.
 | 
					* Please use Clang version 3.1 and above to compile the library on Sandy Bridge microarchitecture. The Clang 3.0 will generate the wrong AVX binary code.
 | 
				
			||||||
* The number of CPUs/Cores should less than or equal to 256. 
 | 
					* The number of CPUs/Cores should less than or equal to 256. 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -114,12 +114,15 @@ static inline int have_excpuid(void){
 | 
				
			||||||
  return eax & 0xffff;
 | 
					  return eax & 0xffff;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef NO_AVX
 | 
				
			||||||
static inline void xgetbv(int op, int * eax, int * edx){
 | 
					static inline void xgetbv(int op, int * eax, int * edx){
 | 
				
			||||||
  __asm__ __volatile__
 | 
					  __asm__ __volatile__
 | 
				
			||||||
    ("xgetbv": "=a" (*eax), "=d" (*edx) : "c" (op) : "cc");
 | 
					    ("xgetbv": "=a" (*eax), "=d" (*edx) : "c" (op) : "cc");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int support_avx(){
 | 
					int support_avx(){
 | 
				
			||||||
 | 
					#ifndef NO_AVX
 | 
				
			||||||
  int eax, ebx, ecx, edx;
 | 
					  int eax, ebx, ecx, edx;
 | 
				
			||||||
  int ret=0;
 | 
					  int ret=0;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
| 
						 | 
					@ -131,8 +134,12 @@ int support_avx(){
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return ret;
 | 
					  return ret;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int get_vendor(void){
 | 
					int get_vendor(void){
 | 
				
			||||||
  int eax, ebx, ecx, edx;
 | 
					  int eax, ebx, ecx, edx;
 | 
				
			||||||
  char vendor[13];
 | 
					  char vendor[13];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,12 +76,15 @@ extern gotoblas_t  gotoblas_SANDYBRIDGE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define BITMASK(a, b, c) ((((a) >> (b)) & (c)))
 | 
					#define BITMASK(a, b, c) ((((a) >> (b)) & (c)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef NO_AVX
 | 
				
			||||||
static inline void xgetbv(int op, int * eax, int * edx){
 | 
					static inline void xgetbv(int op, int * eax, int * edx){
 | 
				
			||||||
  __asm__ __volatile__
 | 
					  __asm__ __volatile__
 | 
				
			||||||
    ("xgetbv": "=a" (*eax), "=d" (*edx) : "c" (op) : "cc");
 | 
					    ("xgetbv": "=a" (*eax), "=d" (*edx) : "c" (op) : "cc");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int support_avx(){
 | 
					int support_avx(){
 | 
				
			||||||
 | 
					#ifndef NO_AVX
 | 
				
			||||||
  int eax, ebx, ecx, edx;
 | 
					  int eax, ebx, ecx, edx;
 | 
				
			||||||
  int ret=0;
 | 
					  int ret=0;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
| 
						 | 
					@ -93,6 +96,9 @@ int support_avx(){
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return ret;
 | 
					  return ret;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int get_vendor(void){
 | 
					static int get_vendor(void){
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue