8.6.3. Integration Examples - 5.2 English - 57404

AOCL User Guide (57404)

Document ID
57404
Release Date
2025-12-29
Version
5.2 English

Example 1: Simple CMake Project (Shared Library):

cmake_minimum_required(VERSION 3.26)
project(MyGemmApp VERSION 1.0.0 LANGUAGES C)

# Find AOCL-DLP
find_package(AoclDlp REQUIRED)

# Create executable
add_executable(my_gemm_app main.c)

# Link with AOCL-DLP shared library
target_link_libraries(my_gemm_app PRIVATE AoclDlp::aocl-dlp)

# Link with math library
target_link_libraries(my_gemm_app PRIVATE m)

Example 2: Makefile-Based Project:

CC = gcc
CFLAGS = -O3 -std=c11 -fopenmp
INCLUDES = -I/usr/local/include
LDFLAGS = -L/usr/local/lib
LIBS = -laocl-dlp -lpthread -lm

TARGET = my_app
SOURCES = main.c

all: $(TARGET)

$(TARGET): $(SOURCES)
     $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(LIBS)

clean:
     rm -f $(TARGET)

Example 3: C++ Application:

#include <aocl_dlp.h>
#include <iostream>
#include <vector>

int main() {
    std::vector<float> a(128 * 64, 1.0f);
    std::vector<float> b(64 * 128, 2.0f);
    std::vector<float> c(128 * 128, 0.0f);

    aocl_gemm_f32f32f32of32('R', 'N', 'N',
        128, 128, 64,
        1.0f, a.data(), 64, 'N',
        b.data(), 128, 'N',
        0.0f, c.data(), 128,
        nullptr
    );

    std::cout << "Result: " << c[0] << std::endl;
    return 0;
}