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;
}