CSER
Student research · undergraduate theses and PIBIC

Research projects

Each project is led by a student of the Computer Science program at UFT, as an undergraduate thesis or a PIBIC scientific initiation project. Code, data and results are published in the group's repositories so every experiment can be reproduced.

Projects

Sorting with Imprecise Comparators

undergraduate thesisapproximate computingenergy efficiency

Studies sorting when the comparator cannot tell apart values closer than a tolerance δ (the Ajtai et al. model). The project measures output error and performance of dual pivot quicksort, mergesort, shellsort and heapsort for δ ∈ {3, 5, 7, 11}, serial and parallel, using exact counts of inversions and the longest sorted subsequence.

The worst case error of quicksort stays bounded at 3δ while it grows with n for the other three. With δ = 11, serial quicksort runs 5.4% faster and executes 11.9% fewer instructions.

C · OpenMP · Linux perf · Pythonsort-evaluation-tolerance →

Approximate Convolution and GEMM

undergraduate thesisapproximate computingperformance

Evaluates 2D convolution, with contiguous and row allocated storage, and blocked matrix multiplication (GEMM) in C, in float and double precision. Each kernel has a complete version and an approximate one that skips kernel positions or iterations of the inner k loop. The study relates time, cycles, instructions, IPC, cache and branch counters to mean absolute error, mean relative error, RMSE and maximum error.

The published campaign covers 276 configurations with 50 repetitions each, run as batch jobs on the group's Saruê server.

C · Linux perf · HTCondor · Pythonmatrix_convolution →

Loop Perforation on IoT Devices

PIBICapproximate computingenergy efficiency

Measures how loop perforation and related approximations change the energy consumption of matrix multiplication on a Raspberry Pi Pico 2W. An INA226 current sensor read by an ESP8266 records time and energy for matrices of order 40 to 200, and Python scripts compare the exact and approximate results with error metrics.

C++ · Pico SDK · INA226 · ESP8266 · PythonAlgoritmo-de-verificação-de-corrente →

Systolic Matrix Multiplication on FPGA

PIBIChardware/software codesignenergy efficiency

Designs a hardware accelerator for matrix multiplication as a systolic array of multiply accumulate (MAC) processing elements, described in Verilog and implemented on a Spartan‑7 FPGA. The accelerator is compared in performance and energy efficiency with a GEMM baseline running on the CPU with OpenBLAS, the kind of workload behind machine learning and image processing.

The first version is a 3 × 3 array of 4 bit processing elements with 10 bit accumulators, verified in simulation, with Vivado builds run as batch jobs on the group's Saruê server.

Verilog · Vivado · Spartan‑7 xc7s50 · C · OpenBLASsystolic_matrix →

Adder Architectures on FPGA

undergraduate thesishardware/software codesignenergy efficiency

Characterizes exact adder architectures (ripple carry, carry lookahead, carry skip, carry select, carry save, Kogge Stone and the vendor IP) at 8, 16 and 32 bits. Each design is synthesized and simulated in Vivado under uniform, normal and exponential input distributions to compare LUT and register usage with static, dynamic and total power. These designs are the baseline for the group's approximate adders.

Verilog · Vivado · Spartan‑7 xc7s50 · Pythonapproximate_adders →

Exact and Approximate Multipliers on FPGA

undergraduate thesisapproximate computinghardware/software codesign

Compares exact multipliers (structural Wallace/Dadda tree, 4:2 compressors and radix 4 Booth) with approximate designs such as partial product perforation, hybrid radix 4 Booth and approximate 4:2 compressors. LUT, DSP and power figures from Vivado are set against MAE, MSE, MRED, NMED and error probability to find the Pareto trade offs between accuracy and cost.

Verilog · Vivado · Pythonapproximate_multipliers →