Research and Development Header


What are the GotoBLAS?
The GotoBLAS codes are currently the fastest implementations of the Basic Linear Algebra Subroutines. Actually, GOTO is the developer's last name and does not mean "go to." (Nor is it pronounced "go to"; the correct pronunciation is "goh-toe.")

What is the main advantage of the GotoBLAS?
The advantage is fast calculation. Note that the actual performance depends in part on the code from which you call the GotoBLAS subroutine(s) and on the combination of architecture and operating system under which you are running. Your own tuning here can make a big difference.

Who develops and maintains the GotoBLAS?
Kazushige Goto was the sole developer of the GotoBLAS libraries. Originally, he targeted the Alpha chip architecture, but he later generalized the library to support various operating systems and architectures.

GotoBLAS is no longer under active development.

Which operating systems are supported?
Supported operating systems include:

Linux, FreeBSD, NetBSD, Solaris, OSX, AIX, Tru64, Unix , WindowsNT

Which architectures are supported?
Supported architectures include:

  • x86 family: Intel Pentium 3, Intel Pentium 4, Intel Core2, AMD Athlon, AMD Opteron
  • x86_64 family: Intel Pentium 4, Intel Core2, AMD Opteron
  • IA64 family: Intel Itanium2
  • Power family: IBM Power 4, Power 5, PPC970, PPC970MP, PPC440, PPC440 FP2
  • SPARC family: SPARC IV
  • Alpha family: EV4, EV5, EV6

Which Fortran compilers are supported?
The GotoBLAS have various interfaces for both commercial and noncommercial compilers, including GNU g77, Intel, PGI, PathScale, IBM, SUN Studio and Compaq.

Do I need xerbla?
No. The library now contains xerbla and you can also use it without the xerbla implementation. But the xerbla implementation connects with stderr, if you need to acquire correct error information (e.g., in case your application wants to check which error occurred), you should use xerbla.o compiled using xerbla.f with the appropriate Fortran compiler.

How do I link my code with the GotoBLAS library?
Just link the GotoBLAS library at the end of your linker flag, as in:

g77 -o <your executable> <your object> -lgoto_xxx -lpthread

How do I control the number of threads?
Currently, all of the GotoBLAS libraries are threaded and all attempt to use all of the processors available on your target computer. If you wish to control the number of threads, you need to specify the OMP_NUM_THREADS or GOTO_NUM_THREADS environment. Both of these environmental variables are identical except with respect to priority. The GOTO_NUM_THREADS environment is particularly useful for OpenMP users who want to control both the number of OpenMP tasks and the number of GotoBLAS threads