Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addition of SYCL implementation of SLAMBench #13

Open
wants to merge 196 commits into
base: master
Choose a base branch
from

Conversation

agozillon
Copy link

@agozillon agozillon commented Nov 9, 2019

This adds a new SYCL module for SLAMBench.

It currently works using ComputeCpp for CPU and GPU and Intels open source SYCL implementation for Intel GPU.

The compilation of the SYCL modules have an external dependency on: https://github.com/agozillon/syclcc which are a set of driver scripts that allow CMake to treat the SYCL compiler as it would treat a normal C++ compiler without the needed addition of any new SYCL specific compile arguments.

Some steps covering this have been added to the README.md. On the note of the README.md I promise the changes aren't as significant as they look from the source <-> source difference! You should be able to just hit the "Display the rich diff" button and it'll show a more realistic view of the changes made.

@pkeir was the main contributor of this patch as you can probably tell by the prolific commit history! So I'm tagging him to help with the discussion of the pull request.

…hen CXX is set to syclcc. The SYCL code is currently still exactly the same as the cpp version.
…the OpenCL version which may have a signed/unsigned bug.
pkeir and others added 28 commits November 7, 2019 18:55
…is currently a problem for intel's sycl. Turning CMAKE_CXX_EXTENSIONS off in CMakeLists.txt ensures we obtain -std=c++11.
Accidentally left in some <<<<< HEAD
from conflicts.

And I also did some accidental space addition / removal in places that 
aren't functionally required and just add noise to the pull request.

Also some minor artifacts from the reapplication of the patches in an 
order they technically never were applied.

Signed-off-by: Andrew Gozillon andrew.gozillon@yahoo.com
Copy link
Contributor

@bbodin bbodin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this contribution, this is just amazing !!
I apologize I did not review earlier.

I would have approved directly, but some files should not have been modified:
kfusion/include/default_parameters.h
kfusion/src/reader.cpp
kfusion/src/mainQt.cpp
kfusion/src/benchmark.cpp
kfusion/qt/SlamBenchQt.cpp
kfusion/include/interface.h
kfusion/include/draw.h

Do you think you can do something with it ?

Best wishes,

Thanks !

I've updated the documentation to be more up-to-date, especially after
the recent script updates.

I've made an attempt at fixing the build system when CXX is set to
syclcc. You should now be able to compile all modules when it's set.

The main change was modfiyng the -DSYCL compiler definition to only be
speciifed for the SYCL module.

There was another modification required that links to some other syclcc
modifications that had to be done. When using syclcc (and by default
ComputeCpp) as the main compiler, it unfortunately doesn't come packaged
with OpenMP libraries which means the OpenMP module will fail unless a
user has self installed the OpenMP libraries.

The fix for this requried the addition of a new "driver" argument for
syclcc and the application of this argument for the OpenMP module when
syclcc is in use (-syclcc-use-host). Which essentially says use the host
compiler, which by default is g++. This means it'll compile smoothly as
g++ contains omp headers and libraries.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants