fix build error
[platform/upstream/openblas.git] / GotoBLAS_03FAQ.txt
1         GotoBLAS2 FAQ
2
3 1. General
4
5 1.1  Q Can I find useful paper about GotoBLAS2?
6
7      A You may check following URL.
8
9      http://www.cs.utexas.edu/users/flame/Publications/index.htm
10
11     11. Kazushige Goto and Robert A. van de Geijn, " Anatomy of
12         High-Performance Matrix Multiplication," ACM Transactions on
13         Mathematical Software, accepted.
14
15     15. Kazushige Goto and Robert van de Geijn, "High-Performance
16         Implementation of the Level-3 BLAS." ACM Transactions on
17         Mathematical Software, submitted.
18
19
20 1.2  Q Does GotoBLAS2 work with Hyperthread (SMT)?
21
22      A Yes, it will work. GotoBLAS2 detects Hyperthread and
23        avoid scheduling on the same core.
24
25
26 1.3  Q When I type "make", following error occured. What's wrong?
27
28         $shell> make
29         "./Makefile.rule", line 58: Missing dependency operator
30         "./Makefile.rule", line 61: Need an operator
31         ...
32
33      A This error occurs because you didn't use GNU make. Some binary
34        packages install GNU make as "gmake" and it's worth to try.
35
36
37 1.4  Q Function "xxx" is slow. Why?
38
39      A Generally GotoBLAS2 has many well optimized functions, but it's
40        far and far from perfect. Especially Level 1/2 function
41        performance depends on how you call BLAS. You should understand
42        what happends between your function and GotoBLAS2 by using profile
43        enabled version or hardware performance counter. Again, please
44        don't regard GotoBLAS2 as a black box.
45
46
47 1.5  Q I have a commercial C compiler and want to compile GotoBLAS2 with
48        it. Is it possible?
49
50      A All function that affects performance is written in assembler
51        and C code is just used for wrapper of assembler functions or
52        complicated functions. Also I use many inline assembler functions,
53        unfortunately most of commercial compiler can't handle inline
54        assembler. Therefore you should use gcc.
55
56
57 1.6  Q I use OpenMP compiler. How can I use GotoBLAS2 with it?
58
59      A Please understand that OpenMP is a compromised method to use
60        thread. If you want to use OpenMP based code with GotoBLAS2, you
61        should enable "USE_OPENMP=1" in Makefile.rule.
62
63
64 1.7  Q Could you tell me how to use profiled library?
65
66      A You need to build and link your application with -pg
67        option. After executing your application, "gmon.out" is
68        generated in your current directory.
69
70        $shell> gprof <your application name> gmon.out
71
72        Each sample counts as 0.01 seconds.
73          %   cumulative   self              self     total
74         time   seconds   seconds    calls  Ks/call  Ks/call  name
75         89.86    975.02   975.02    79317     0.00     0.00  .dgemm_kernel
76          4.19   1020.47    45.45       40     0.00     0.00  .dlaswp00N
77          2.28   1045.16    24.69     2539     0.00     0.00  .dtrsm_kernel_LT
78          1.19   1058.03    12.87    79317     0.00     0.00  .dgemm_otcopy
79          1.05   1069.40    11.37     4999     0.00     0.00  .dgemm_oncopy
80        ....
81
82        I think profiled BLAS library is really useful for your
83        research. Please find bottleneck of your application and
84        improve it.
85
86 1.8  Q Is number of thread limited?
87
88      A Basically, there is no limitation about number of threads. You
89        can specify number of threads as many as you want, but larger
90        number of threads will consume extra resource. I recommend you to
91        specify minimum number of threads.
92
93 1.9  Q I have segfaults when I compile with USE_OPENMP=1. What's wrong?
94
95      A This may be related to a bug in the Linux kernel 2.6.32. Try applying
96      the patch segaults.patch using
97
98      patch < segfaults.patch
99
100      and see if the crashes persist. Note that this patch will lead to many
101      compiler warnings.
102
103 2. Architecture Specific issue or Implementation
104
105 2.1 Q GotoBLAS2 seems to support any combination with OS and
106       architecture. Is it possible?
107
108     A Combination is limited by current OS and architecture. For
109       examble, the combination OSX with SPARC is impossible. But it
110       will be possible with slight modification if these combination
111       appears in front of us.
112
113
114 2.2 Q I have POWER architecture systems. Do I need extra work?
115
116     A Although POWER architecture defined special instruction
117       like CPUID to detect correct architecture, it's privileged
118       and can't be accessed by user process. So you have to set
119       the architecture that you have manually in getarch.c.
120
121
122 2.3 Q I can't create DLL on Cygwin (Error 53). What's wrong?
123
124     A You have to make sure if lib.exe and mspdb80.dll are in Microsoft
125       Studio PATH. The easiest way is to use 'which' command.
126
127     $shell> which lib.exe
128     /cygdrive/c/Program Files/Microsoft Visual Studio/VC98/bin/lib.exe