|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cryptocurrency News Articles
llama.cpp: Writing A Simple C++ Inference Program for GGUF LLM Models
Jan 14, 2025 at 03:04 am

This tutorial will guide you through the process of building a simple C++ program that performs inference on GGUF LLM models using the llama.cpp framework. We will cover the essential steps involved in loading the model, performing inference, and displaying the results. The code for this tutorial can be found here.
Prerequisites
To follow along with this tutorial, you will need the following:
A Linux-based operating system (native or WSL)
CMake installed
GNU/clang toolchain installed
Step 1: Setting Up the Project
Let's start by setting up our project. We will be building a C/C++ program that uses llama.cpp to perform inference on GGUF LLM models.
Create a new project directory, let's call it smol_chat.
Within the project directory, let's clone the llama.cpp repository into a subdirectory called externals. This will give us access to the llama.cpp source code and headers.
mkdir -p externals
cd externals
git clone https://github.com/georgigerganov/llama.cpp.git
cd ..
Step 2: Configuring CMake
Now, let's configure our project to use CMake. This will allow us to easily compile and link our C/C++ code with the llama.cpp library.
Create a CMakeLists.txt file in the project directory.
In the CMakeLists.txt file, add the following code:
cmake_minimum_required(VERSION 3.10)
project(smol_chat)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(smol_chat main.cpp)
target_include_directories(smol_chat PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(smol_chat llama.cpp)
This code specifies the minimum CMake version, sets the C++ standard and standard flag, adds an executable named smol_chat, includes headers from the current source directory, and links the llama.cpp shared library to our executable.
Step 3: Defining the LLM Interface
Next, let's define a C++ class that will handle the high-level interactions with the LLM. This class will abstract away the low-level llama.cpp function calls and provide a convenient interface for performing inference.
In the project directory, create a header file called LLMInference.h.
In LLMInference.h, declare the following class:
class LLMInference {
public:
LLMInference(const std::string& model_path);
~LLMInference();
void startCompletion(const std::string& query);
std::string completeNext();
private:
llama_model llama_model_;
llama_context llama_context_;
llama_sampler llama_sampler_;
std::vector
std::vector
std::vector
llama_batch batch_;
};
This class has a public constructor that takes the path to the GGUF LLM model as an argument and a destructor that deallocates any dynamically-allocated objects. It also has two public member functions: startCompletion, which initiates the completion process for a given query, and completeNext, which fetches the next token in the LLM's response sequence.
Step 4: Implementing LLM Inference Functions
Now, let's define the implementation for the LLMInference class in a file called LLMInference.cpp.
In LLMInference.cpp, include the necessary headers and implement the class methods as follows:
#include "LLMInference.h"
#include "common.h"
#include
#include
#include
LLMInference::LLMInference(const std::string& model_path) {
llama_load_model_from_file(&llama_model_, model_path.c_str(), llama_model_default_params());
llama_new_context_with_model(&llama_context_, &llama_model_);
llama_sampler_init_temp(&llama_sampler_, 0.8f);
llama_sampler_init_min_p(&llama_sampler_, 0.0f);
}
LLMInference::~LLMInference() {
for (auto& msg : _messages) {
std::free(msg.content);
}
llama_free_model(&llama_model_);
llama_free_context(&llama_context_);
}
void LLMInference::startCompletion(const std::string& query)
Disclaimer:info@kdj.com
The information provided is not trading advice. kdj.com does not assume any responsibility for any investments made based on the information provided in this article. Cryptocurrencies are highly volatile and it is highly recommended that you invest with caution after thorough research!
If you believe that the content used on this website infringes your copyright, please contact us immediately (info@kdj.com) and we will delete it promptly.
-
- AVAX Price Surges as Avalanche Chain Embraces Tokenized Funds and Institutional Growth
- Sep 18, 2026 at 04:05 pm
- Avalanche's recent rebound and strategic moves into tokenized funds and institutional liquidity signal a potential turning point for AVAX, as the network positions itself for long-term growth and broader adoption.
-
- Bank of Japan's Rate Hike: Yen, Bitcoin, and the Unwinding of Carry Trades
- Sep 18, 2026 at 12:05 pm
- The Bank of Japan's recent interest rate hike sends ripples through global markets, making yen-funded trades pricier and impacting Bitcoin's standing against the Japanese currency, while sparking debates on capital flows and risk asset volatility.
-
-
- CFTC Offers Broker Registration Relief for Passive Crypto Trading Software, Signals Broader Regulatory Shift
- Sep 18, 2026 at 11:55 am
- The CFTC is providing significant relief for passive crypto trading software, easing broker registration burdens and signaling a proactive approach to crypto regulation amid legislative delays.
-
- U.S. Tightens Grip: New Sanctions Target Iranian Crypto Exchange BitBank Amid Maritime Payment Probe
- Sep 18, 2026 at 11:55 am
- The U.S. Treasury has sanctioned BitBank, an Iranian cryptocurrency exchange, for allegedly facilitating Bitcoin payments linked to maritime traffic through the Strait of Hormuz.
-
- US Treasury Sanctions Iranian Exchange BitBank Over $1 Billion in Crypto Flows: A New York Take
- Sep 18, 2026 at 11:55 am
- The US Treasury has sanctioned Iran-based BitBank, alleging it processed $1 billion in Bitcoin for Iran's Revolutionary Guard through the 'Hormuz Safe' scheme, signaling Washington's intensified crackdown on crypto-based sanctions evasion.
-
- North Korea Malware & Asia Express: CoinEx's Exit Amidst a Shifting Digital Landscape
- Sep 18, 2026 at 08:05 am
- Amidst rising North Korean cyber threats and a dynamic Asian crypto scene, CoinEx, a Hong Kong-founded exchange, shutters after nine years, signaling a pivotal moment for regional digital asset markets and regulatory landscapes.
-
-
- Vitalik Buterin Challenges AI Cybersecurity Doom Narrative, Advocates for Formal Verification
- Sep 18, 2026 at 12:05 am
- Vitalik Buterin, Ethereum co-founder, refutes the 'AI doom narrative' in cybersecurity, asserting AI's potential to bolster defenses through formal verification, a stance underpinned by Ethereum's ongoing security research.

































