Skip to main content

BLAS: Basic Linear Algebra Subprograms | Navigating Through BLAS on Your Windows Machine

Basic Linear Algebra Subprograms (BLAS), a term I encountered while working with the LLAMA (LLM model from Meta) on my windows machine seems to directly affect the performance of the model's inference. Most probably you (like me) already have BLAS capabilities on your windows machine and may be missing on the chance to leverage its capabilities. Lets understand the steps to ensure you are aware of BLAS and its implementation on your machine.



Introduction:


Basic Linear Algebra Subprograms (BLAS) is the standard that outlines a collection of fundamental routines designed to execute prevalent linear algebra operations, including vector addition, scalar multiplication, dot products, linear combinations, and matrix multiplication. Universally recognized as the standard foundational routines for linear algebra libraries, BLAS routines offer bindings for both C, through the "CBLAS interface," and Fortran, known as the "BLAS interface." While the BLAS specification is universally applicable, implementations are frequently optimized for a specific machine's speed, offering notable performance enhancements. Consequently, BLAS implementations often harness specialized floating-point hardware features, such as vector registers or SIMD instructions, to bolster computational efficiency. 

Importance: 


Hence Basic Linear Algebra Subprograms (BLAS) is pivotal in the computational and scientific computing domains, offering low-level routines optimized for performing common linear algebra operations. 

WINDOWS:


While BLAS may not be a typical installation in Windows, it is deeply integrated into various scientific computing software. In this guide, we'll explore how to verify if BLAS is accessible on your Windows machine and how to utilize it.


1. Checking BLAS in Python

  • Using NumPy: The numerical library NumPy, widely used in Python, often links to BLAS for efficient numerical operations.
import numpy as np 
np.__config__.show()
  • Understanding Output: Navigate through the output, looking for references to BLAS or associated libraries like OpenBLAS or Intel MKL.

2. Manual Verification of BLAS Libraries

• Inspecting Environment Variables: Ensure that any installed BLAS libraries are referenced in your system’s PATH.
○ Navigate to: This PC / Computer > Properties > Advanced system settings > Environment Variables
○ Scrutinize the ‘Path’ under ‘System variables’ for any BLAS-related entries.
• Utilizing Windows Search: Simply enter "BLAS" into the Windows search bar and scan through the results for relevant entries.
• Checking Installed Software: Navigate through the ‘Control Panel’ to explore the installed software list for any programs that may incorporate BLAS, such as MATLAB or Anaconda.

3. Installing BLAS on Windows

• Through Software Packages: Install software like MATLAB or Anaconda, which inherently provide access to BLAS libraries.
• Standalone BLAS Libraries: Consider installing a specific BLAS library like OpenBLAS. This can be achieved by downloading pre-built binaries or using a package manager.
Compiling BLAS from Source: Though it demands a more intricate process, compiling BLAS from source is an alternative approach, especially for developers needing a customized setup.

Conclusion

The applicability of BLAS in linear algebra computations is vast and wide-reaching in the scientific computing arena. While ensuring it’s available on your Windows machine might require a bit of navigation and checking, the rewards in computational efficiency are well worth the efforts. Whether utilizing it through a higher-level language like Python or linking directly to the libraries in your applications, BLAS can be a potent tool in your numerical computing toolkit.

Comments

Popular posts from this blog

FTP C# Error : “The remote server returned an error: (530) Not logged in ."

  Recently working on a FTP solution using C# , i encountered an error  “ The  remote server returned an error: (530) Not logged in.” The code i used was following: FtpWebRequest request = (FtpWebRequest)WebRequest.Create( ftp://xxxxxx/file.txt ); request.Method = WebRequestMethods.Ftp.UploadFile request.Credentials = new NetworkCredential(usernameVariable, passwordVariable); What was more bewildering was if i modified the code to following, the solution was working fine. But this for obvious reasons is not an option as the username cannot be hardcoded //works but implausible to use in realtime solutions request.Credentials = new NetworkCredential("dmn/#gsgs", password);  Some googling revealed that special charcters create issues in the NetworkCredential Object. Hence some playing around worked for me, and it works irrespective of wether i do a FTPWebRequest or WebRequest. Solution: Instantiate NetworkCredential object with three paramters (username, password, domain) and m

How to Add/Edit environment variables on Windows.

 1. Search and Open Environment variables 2. On the "System Properties" panel click Environment Variables 3. Double click on the required variable to edit/add new values.

Llamhub SnowflakeReader: A Loader to query and chat Snowflake Data in your LLM Applications

  Snowflake Loader for LLM Recently my second contribution to Llamaindex "SnowflakeReader" was merged to Lllamahub repository. This loader connects to Snowflake (using SQLAlchemy under the hood). The user specifies a query and extracts Document objects corresponding to the results. This loader is designed to be used as a way to load data into  LlamaIndex  and/or subsequently used as a Tool in a  LangChain  Agent.  Usage Option 1: Pass your own SQLAlchemy Engine object of the database connection Here's an example usage of the SnowflakeReader. from llama_index import download_loader SnowflakeReader = download_loader ( 'SnowflakeReader' ) reader = SnowflakeReader ( engine = your_sqlalchemy_engine , ) query = "SELECT * FROM your_table" documents = reader . load_data ( query = query ) Option 2: Pass the required parameters to esstablish Snowflake connection Here's an example usage of the SnowflakeReader. from llama_index import down