Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
6d1fd3f
toggle interleaving using cmd line args, svm init
Jun 23, 2020
de65c7d
modified tests based on interleaving args
Jun 23, 2020
dbc09a8
enabled fast emulation
Jun 23, 2020
6077dd6
Working svm host code
Jun 25, 2020
302844c
malloc zero size check
Jun 25, 2020
d2003e5
Buffer locations attribute in fft3d kernel
Jun 26, 2020
b122231
Doxygen CMake, removed svm option in data alloc
Jun 29, 2020
9bd3b08
Build doxygen only on option
Jun 30, 2020
683cb21
test simple batch svm execution
Jul 1, 2020
dc58b88
Profile synthesis, fix without fftw
Jul 1, 2020
a60c417
sq: general batch
Jul 3, 2020
6f2fd40
working batch fft3d svm
Jul 6, 2020
7368cdc
cmake fix for ci
Jul 6, 2020
9731719
fft2d with opt matrix transpose
Aug 4, 2020
106182f
working 3D FFT with bitrev diagonal transpose
Aug 5, 2020
efb3e20
loop coalesced fft kernels
Aug 5, 2020
f8dc082
fft3d: single loop dbl buffered fetch1
Aug 5, 2020
a469f65
fft3d: fetch_transpose working
Aug 6, 2020
8c090f8
Buffer location in stores, iteration wise measures
Aug 7, 2020
b7c457f
FFT2d: bram dbl buf and single loop
Aug 12, 2020
eb91587
correct svm buffer flags, init output buffer, fft1d iter
Aug 20, 2020
26187f8
clFinish stms in DDR buffer reads
Aug 20, 2020
6d3ec73
FFT3D: separated svm and ddr
Aug 20, 2020
2a0176b
FFT3D: Working opt bram transpose, bool instead of int
Sep 8, 2020
724c747
FFT3D: renamed bram transpose files, dependencies
Sep 9, 2020
8288068
CI: fixed host executable names
Sep 9, 2020
19c28fe
FFT1d: working svm
Sep 10, 2020
ce22802
CI: corrected build, artifact paths
Oct 1, 2020
047d23b
Test: fix path to 2d bram
Oct 1, 2020
e96acbf
CI: Adding release debug to restrict prints
Oct 1, 2020
5517581
Test: fixed path for 3d FFT DDR
Oct 1, 2020
eb0961d
modified verification function
Oct 1, 2020
07dba1f
Working DDR batch of 2
Oct 6, 2020
19ff6a6
working DDR batch for all
Oct 6, 2020
9e2cf20
Split to individual files
Oct 12, 2020
612f386
Hw Counters and const inp
Dec 7, 2020
dbf7c70
Reordered host kernel calls, removed channel depth
Jan 12, 2021
179d940
batched fft3d with safelen
Jan 18, 2021
85b3e4f
fixed host code for svm, svm batch
Jan 20, 2021
1e416eb
working svm batch
Feb 4, 2021
673e122
no verify param
Feb 4, 2021
74f4a06
free forgotten
Feb 4, 2021
0fea2a0
porting example to cpp, using cxxopts, cmake files to folder
Sep 29, 2021
2345a64
removed argparse, refactored timing
Oct 1, 2021
16f633e
verify bitrev fft1d, using opt bram fft3d
Oct 4, 2021
20f78b4
working ddr batch
Oct 4, 2021
8be7c92
streamlined synth path
Oct 7, 2021
d607e42
identical fft3d ddr and svm kernels
Oct 8, 2021
f20c744
updated ci
Oct 8, 2021
fe14f16
updated tests
Oct 8, 2021
da40391
removed extern modules
Oct 8, 2021
cd03621
updated ci
Oct 8, 2021
48f2e61
updated ci with correct emulation env var
Oct 8, 2021
8b26390
updated ci
Oct 8, 2021
5f795e4
Update .gitlab-ci.yml
Oct 8, 2021
fe24e32
removed common cl files to common dir
Oct 12, 2021
ad1aec2
Merge branch 'simplebatch_svm' of git.uni-paderborn.de:arjunr/fft3d-f…
Oct 12, 2021
4fab1ae
gitlab ci update
Oct 12, 2021
c06c222
updated readme
Oct 16, 2021
1a97c92
updated changelog
Oct 16, 2021
4a8bec0
fixed args in fft1d, fft2d
Oct 16, 2021
3dae9e1
fixed ddr batch and renamed queues
Oct 16, 2021
a614680
added additional variants to application selection
Oct 16, 2021
2ec2aa7
expressive emulation and report generation
Oct 16, 2021
7c008f8
cleaned up application files
Oct 16, 2021
81fe6c1
fixed emulation dependency in test
Oct 16, 2021
6a1ddd4
draft userguide
Oct 16, 2021
0ae48a0
fixed gitlab ci
Oct 16, 2021
e49803c
added power scripts
Oct 17, 2021
5d343b2
minor change
Oct 17, 2021
08e97e1
updated changelog
Oct 17, 2021
6152fd0
ci: test fft1d
Oct 17, 2021
9b11859
updated ci with 2d, 3d variants
Oct 17, 2021
8e5c316
removed fft3d bram due to lack of cpu resources
Oct 17, 2021
58b7279
cmake build type selection
Oct 18, 2021
b8a7795
removed caching cmake variables for sdk and bsp
Oct 18, 2021
8cebccd
modified readme and updated userguide
Oct 18, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
build/
debug/
build*/
debug*/
test/
bin/
fpgabitstream/
reports/
vscode/
scripts/
scripts/slurm
build*
svm_build/
debug*
test_*

tags
*.DS_Store
Expand Down
56 changes: 39 additions & 17 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,58 @@ variables:
stages:
- build
- test
- test_fft1d
- test_fft2d_ddr
- test_fft2d_bram
- test_fft3d_ddr

build-all:
stage: build
script:
- rm -rf build
- mkdir -p build && cd build
- cmake -DLOG_FFT_SIZE=6 ..
- srun -A pc2-mitarbeiter -p fpga --constraint=emul --pty bash
- cmake -DLOG_FFT_SIZE=6 -DCMAKE_BUILD_TYPE=Release ..
- make
- make fft1d_emu
- make fft2d_ddr_emu
- make fft2d_bram_emu
- make fft3d_ddr_triv_emu
- make fft3d_bram_emu
- chmod +x bin/fft3d bin/fft2d bin/fft1d bin/test_fftfpga
- chmod +x bin/fft
artifacts:
paths:
- build/bin/emu_64_fft1d/fft1d.aocx
- build/bin/emu_64_fft2d_ddr/fft2d_bram.aocx
- build/bin/emu_64_fft2d_bram/fft2d_ddr.aocx
- build/bin/emu_64_fft3d_ddr_triv/fft3d_ddr_triv.aocx
- build/bin/emu_64_fft3d_bram/fft3d_bram.aocx
- build/bin/p520_hpc_sg280l/emulation/fft1d_64_nointer/fft1d.aocx
- build/bin/p520_hpc_sg280l/emulation/fft2d_bram_64_nointer/fft2d_bram.aocx
- build/bin/p520_hpc_sg280l/emulation/fft2d_ddr_64_nointer/fft2d_ddr.aocx
- build/bin/p520_hpc_sg280l/emulation/fft3d_ddr_64_nointer/fft3d_ddr.aocx
- build/bin/p520_hpc_sg280l/emulation/fft3d_bram_64_nointer/fft3d_bram.aocx
- build/bin/test_fftfpga
- build/bin/fft3d
- build/bin/fft2d
- build/bin/fft1d
- build/bin/fft

test-all:
stage: test
script:
- cd build/bin/
- CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA=1 ./test_fftfpga
- CL_CONFIG_CPU_EMULATE_DEVICES=1 ./test_fftfpga
dependencies:
- build-all
- build-all

test-fft1d:
stage: test_fft1d
script:
- cd build/bin/
- ./fft -n 64 -d 1 --emulate -p p520_hpc_sg280l/emulation/fft1d_64_nointer/fft1d.aocx

test-fft2d_ddr:
stage: test_fft2d_ddr
script:
- cd build/bin/
- ./fft -n 64 -d 2 --emulate -p p520_hpc_sg280l/emulation/fft2d_ddr_64_nointer/fft2d_ddr.aocx

test-fft2d_bram:
stage: test_fft2d_bram
script:
- cd build/bin/
- ./fft -n 64 -d 2 --emulate --use_bram -p p520_hpc_sg280l/emulation/fft2d_bram_64_nointer/fft2d_bram.aocx

test-fft3d_ddr:
stage: test_fft3d_ddr
script:
- cd build/bin/
- ./fft -n 64 -d 3 --emulate -p p520_hpc_sg280l/emulation/fft3d_ddr_64_nointer/fft3d_ddr.aocx
12 changes: 0 additions & 12 deletions .gitmodules

This file was deleted.

26 changes: 9 additions & 17 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,23 +1,15 @@
# Changelog

All notable changes to this project will be documented in this file.

## Unreleased
- coarse grained SVM support for Intel FPGAs
- host code as library
- configurable platform name
- choice of platform (currently chooses first platform)
- choice of device (currently chooses first device)
- loads binary to multiple devices (currently only the first device)
- batch mode
- xilinx fpgas

## [1.0.0] - []
- configurable CL platform and device

## [1.0.0] - [18.10.2021]

### Added
- 3d FFT in 2 varients, in bram and ddr transpose
- 2d FFT in 2 varients, in bram and ddr transpose
- 1d FFT
- CI/CD
- gtests
- CMake build
- License
- 1d, 2d, 3d FFT with variants on the location of the transposition
- Batched 3D FFT to schedule multiple transformations by overlapping data transfers and FFT computations
- Using OpenCL Shared Virtual Memory (SVM) for data transfers between FPGA and host
- Unit tests
- CMake build system
75 changes: 27 additions & 48 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,61 +1,40 @@
# Author: Arjun Ramaswami
cmake_minimum_required (VERSION 3.1)

project(fft)
cmake_minimum_required (VERSION 3.10)
project(fft VERSION 2.0
DESCRIPTION "OpenCL based FFT library for Intel FPGAs"
LANGUAGES C CXX)

set(CMAKE_C_STANDARD 11)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)

# Setup submodules that are required
find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# Update submodules as needed
option(GIT_SUBMODULE "Check submodules during build" ON)
if(GIT_SUBMODULE)
message(STATUS "Submodule update")
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
endif()
endif()
endif()

# Include hlslib in CMake module path
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/extern/hlslib/cmake)
# build external dependencies
message("-- Building external dependencies")
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/extDep.cmake)

# Find hlslib Intel OpenCL kernels
## find Intel FPGA SDK for OpenCL
find_package(IntelFPGAOpenCL REQUIRED)

# Find FFTW
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/extern/findFFTW)

find_package(FFTW)
if(FFTW_FOUND)
message("-- FFTW library found")
else()
message(WARNING, "FFTW library not found")
message("-- IntelFPGAOpenCL found")

## find FFTW
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
find_package(FFTW REQUIRED)
message("-- FFTW found")

# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "Setting build type to 'Debug' as none was specified.")
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"RelWithDebInfo")
endif()

# Link argparse as static library
add_subdirectory(${CMAKE_SOURCE_DIR}/extern/argparse)

# Add sub directories
# sub directories
add_subdirectory(api)
add_subdirectory(kernels)
add_subdirectory(examples)

# GTest Setup
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
option(PACKAGE_TESTS "Build the tests" ON)
endif()

if(PACKAGE_TESTS)
enable_testing()
include(GoogleTest)
add_subdirectory(tests)
endif()

# TODO: shift to external project instead of submodules as suggested by GTest
# build tests
message("-- Building tests")
add_subdirectory(tests)
enable_testing()
Loading