Skip to content

Instantly share code, notes, and snippets.

@Alabate
Last active December 7, 2017 09:52
Show Gist options
  • Save Alabate/c1017c4f0a6c3b9e5e6db75ddbcddf0b to your computer and use it in GitHub Desktop.
Save Alabate/c1017c4f0a6c3b9e5e6db75ddbcddf0b to your computer and use it in GitHub Desktop.
ARM hack in ethz-asl/maplab
diff --git a/algorithms/loopclosure/descriptor-projection/CMakeLists.txt b/algorithms/loopclosure/descriptor-projection/CMakeLists.txt
index 3653b75..9770ff0 100644
--- a/algorithms/loopclosure/descriptor-projection/CMakeLists.txt
+++ b/algorithms/loopclosure/descriptor-projection/CMakeLists.txt
@@ -4,11 +4,16 @@ project(descriptor_projection)
find_package(catkin_simple REQUIRED)
catkin_simple()
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon")
+add_definitions("-mfpu=neon")
+
set(PROTO_DEFNS proto/descriptor-projection/projected_image.proto)
PROTOBUF_CATKIN_GENERATE_CPP2("proto" PROTO_SRCS PROTO_HDRS ${PROTO_DEFNS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(LIBRARY_NAME ${PROJECT_NAME})
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon")
+add_definitions("-mfpu=neon")
cs_add_library(${LIBRARY_NAME} src/build-projection-matrix.cc
src/descriptor-projection.cc
@@ -28,6 +33,8 @@ if(CATKIN_ENABLE_TESTING)
target_link_libraries(test_matching_based_lc_quantizer_serialization ${LIBRARY_NAME})
endif()
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon")
+add_definitions("-mfpu=neon")
# CMake Indexing
FILE(GLOB_RECURSE LibFiles "include/*")
add_custom_target(headers SOURCES ${LibFiles})
diff --git a/algorithms/loopclosure/descriptor-projection/include/descriptor-projection/descriptor-projection.h b/algorithms/loopclosure/descriptor-projection/include/descriptor-projection/descriptor-projection.h
index 7fad532..9d974b0 100644
--- a/algorithms/loopclosure/descriptor-projection/include/descriptor-projection/descriptor-projection.h
+++ b/algorithms/loopclosure/descriptor-projection/include/descriptor-projection/descriptor-projection.h
@@ -67,20 +67,11 @@ void DescriptorToEigenMatrix(
// Define a set of macros to NEON and SSE instructions so we can use the same
// code further down for both platforms.
-#ifdef __ARM_NEON__
#define VECTOR_SET vdupq_n_u8 // Set a vector from a single uint8.
#define VECTOR_LOAD(x) vld1q_u8(x) // Set a vector from a mem location.
#define VECTOR_TYPE uint8x16_t // The type of the vector element.
#define VECTOR_AND vandq_u8 // The vector AND instruction.
#define VECTOR_EXTRACT(x, i) vgetq_lane_u8(x, i) // Get element from vector.
-#else
-#define VECTOR_SET _mm_set1_epi8
-#define VECTOR_LOAD(x) _mm_load_si128(reinterpret_cast<const __m128i*>(x))
-#define VECTOR_TYPE __m128i
-#define VECTOR_AND _mm_and_si128
-// Could use _mm_extract_epi8, but this requires SSE4.1.
-#define VECTOR_EXTRACT(x, i) reinterpret_cast<const char*>(&x)[i]
-#endif // __ARM_NEON__
VECTOR_TYPE mask[8];
mask[0] = VECTOR_SET((1 << 0));
@@ -142,20 +133,11 @@ void DescriptorToEigenMatrix(
// Define a set of macros to NEON and SSE instructions so we can use the same
// code further down for both platforms.
-#ifdef ANDROID
#define VECTOR_SET vdupq_n_u8 // Set a vector from a single uint8.
#define VECTOR_LOAD(x) vld1q_u8(x) // Set a vector from a mem location.
#define VECTOR_TYPE uint8x16_t // The type of the vector element.
#define VECTOR_AND vandq_u8 // The vector AND instruction.
#define VECTOR_EXTRACT(x, i) vgetq_lane_u8(x, i) // Get element from vector.
-#else
-#define VECTOR_SET _mm_set1_epi8
-#define VECTOR_LOAD(x) _mm_load_si128(reinterpret_cast<const __m128i*>(x))
-#define VECTOR_TYPE __m128i
-#define VECTOR_AND _mm_and_si128
-// Could use _mm_extract_epi8, but this requires SSE4.1.
-#define VECTOR_EXTRACT(x, i) reinterpret_cast<const char*>(&x)[i]
-#endif // ANDROID
VECTOR_TYPE mask[8];
mask[0] = VECTOR_SET((1 << 0));
diff --git a/algorithms/loopclosure/loop-closure-handler/CMakeLists.txt b/algorithms/loopclosure/loop-closure-handler/CMakeLists.txt
index 10dafbb..584542e 100644
--- a/algorithms/loopclosure/loop-closure-handler/CMakeLists.txt
+++ b/algorithms/loopclosure/loop-closure-handler/CMakeLists.txt
@@ -7,6 +7,10 @@ catkin_simple(ALL_DEPS_REQUIRED)
set(PROTO_DEFNS proto/loop-closure-handler/loop_detector_node.proto)
PROTOBUF_CATKIN_GENERATE_CPP2("proto" PROTO_SRCS PROTO_HDRS ${PROTO_DEFNS})
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon")
+add_definitions("-mfpu=neon")
+
#############
# LIBRARIES #
#############
diff --git a/algorithms/loopclosure/matching-based-loopclosure/CMakeLists.txt b/algorithms/loopclosure/matching-based-loopclosure/CMakeLists.txt
index c582e3e..8387f01 100644
--- a/algorithms/loopclosure/matching-based-loopclosure/CMakeLists.txt
+++ b/algorithms/loopclosure/matching-based-loopclosure/CMakeLists.txt
@@ -7,6 +7,10 @@ catkin_simple()
set(PROTO_DEFNS proto/matching-based-loopclosure/matching_based_loop_detector.proto)
PROTOBUF_CATKIN_GENERATE_CPP2("proto" PROTO_SRCS PROTO_HDRS ${PROTO_DEFNS})
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon")
+add_definitions("-mfpu=neon")
+
set(LIBRARY_NAME ${PROJECT_NAME})
cs_add_library(${LIBRARY_NAME} src/detector-settings.cc
src/matching-based-engine.cc
diff --git a/algorithms/loopclosure/vocabulary-tree/CMakeLists.txt b/algorithms/loopclosure/vocabulary-tree/CMakeLists.txt
index 44e18dc..a13897b 100644
--- a/algorithms/loopclosure/vocabulary-tree/CMakeLists.txt
+++ b/algorithms/loopclosure/vocabulary-tree/CMakeLists.txt
@@ -4,7 +4,7 @@ project(vocabulary_tree)
find_package(catkin_simple REQUIRED)
catkin_simple(ALL_DEPS_REQUIRED)
-add_definitions(-std=c++11 -mssse3)
+add_definitions(-std=c++11)
set(LIBRARY_NAME ${PROJECT_NAME})
cs_add_library(${LIBRARY_NAME}
diff --git a/algorithms/loopclosure/vocabulary-tree/cmake/export_flags.cmake b/algorithms/loopclosure/vocabulary-tree/cmake/export_flags.cmake
index e45cc4e..c335e15 100644
--- a/algorithms/loopclosure/vocabulary-tree/cmake/export_flags.cmake
+++ b/algorithms/loopclosure/vocabulary-tree/cmake/export_flags.cmake
@@ -1,3 +1,3 @@
if (NOT ANDROID)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif()
Submodule aslam_cv2 contains modified content
diff --git a/aslam_cv2/aslam_cv_common/cmake/export_flags.cmake b/aslam_cv2/aslam_cv_common/cmake/export_flags.cmake
index 1d6d341..05ac467 100644
--- a/aslam_cv2/aslam_cv_common/cmake/export_flags.cmake
+++ b/aslam_cv2/aslam_cv_common/cmake/export_flags.cmake
@@ -5,7 +5,7 @@ if (ARCHITECTURE MATCHES "^(arm)")
endif()
if (NOT ANDROID AND NOT IS_ARM_ARCHITECTURE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
elseif (IS_ARM_ARCHITECTURE)
message(STATUS "Setting ARM compilation flags.")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -march=armv7-a")
diff --git a/aslam_cv2/aslam_cv_matcher/CMakeLists.txt b/aslam_cv2/aslam_cv_matcher/CMakeLists.txt
index 004127f..4d5ba67 100644
--- a/aslam_cv2/aslam_cv_matcher/CMakeLists.txt
+++ b/aslam_cv2/aslam_cv_matcher/CMakeLists.txt
@@ -30,7 +30,7 @@ set(SOURCES
)
# for ./aslam_cv/aslam_cv_common/include/aslam/common/hamming-inl.h
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
cs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})
add_doxygen(NOT_AUTOMATIC)
diff --git a/common/maplab-common/src/unique-id.cc b/common/maplab-common/src/unique-id.cc
index 639b568..0c0922d 100644
--- a/common/maplab-common/src/unique-id.cc
+++ b/common/maplab-common/src/unique-id.cc
@@ -6,10 +6,10 @@
namespace common {
namespace internal {
void generateUnique128BitHash(uint64_t hash[2]) {
- static_assert(
+/* static_assert(
sizeof(size_t) == sizeof(uint64_t),
"Please adapt the below to your non-64-bit system.");
-
+*/
static std::atomic<int> counter;
hash[0] =
common::internal::UniqueIdHashSeed::instance().seed() ^
diff --git a/map-structure/localization-summary-map/CMakeLists.txt b/map-structure/localization-summary-map/CMakeLists.txt
index 37bbbdb..8d33a2a 100644
--- a/map-structure/localization-summary-map/CMakeLists.txt
+++ b/map-structure/localization-summary-map/CMakeLists.txt
@@ -4,6 +4,9 @@ project(localization_summary_map)
find_package(catkin_simple REQUIRED)
catkin_simple(ALL_DEPS_REQUIRED)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon")
+add_definitions("-mfpu=neon")
+
set(PROTO_DEFNS proto/localization-summary-map/localization-summary-map.proto)
PROTOBUF_CATKIN_GENERATE_CPP2("proto" PROTO_SRCS PROTO_HDRS ${PROTO_DEFNS})
diff --git a/map-structure/vi-map/include/vi-map/vi-map.h b/map-structure/vi-map/include/vi-map/vi-map.h
index 09bbb31..04b949c 100644
--- a/map-structure/vi-map/include/vi-map/vi-map.h
+++ b/map-structure/vi-map/include/vi-map/vi-map.h
@@ -498,7 +498,7 @@ class VIMap : public backend::ResourceMap,
std::vector<size_t>* num_unknown_landmarks_per_camera,
std::vector<size_t>* total_num_landmarks_per_camera,
size_t* num_landmarks, size_t* num_vertices, size_t* num_observations,
- double* duration_s, time_t* start_time, time_t* end_time) const;
+ double* duration_s, int64_t* start_time, int64_t* end_time) const;
std::string printMapStatistics(
const vi_map::MissionId& mission, const unsigned int mission_number,
Submodule internal/ethzasl_brisk contains modified content
diff --git a/internal/ethzasl_brisk/agast/cmake/export_flags.cmake b/internal/ethzasl_brisk/agast/cmake/export_flags.cmake
index 3a67608..675c020 100644
--- a/internal/ethzasl_brisk/agast/cmake/export_flags.cmake
+++ b/internal/ethzasl_brisk/agast/cmake/export_flags.cmake
@@ -1,4 +1,2 @@
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OPENCV -std=c++0x")
-if (NOT ANDROID)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3")
-endif()
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
diff --git a/internal/ethzasl_brisk/brisk/CMakeLists.txt b/internal/ethzasl_brisk/brisk/CMakeLists.txt
index 75da821..3be90f8 100755
--- a/internal/ethzasl_brisk/brisk/CMakeLists.txt
+++ b/internal/ethzasl_brisk/brisk/CMakeLists.txt
@@ -6,7 +6,7 @@ project(brisk)
find_package(catkin_simple REQUIRED)
catkin_simple(ALL_DEPS_REQUIRED)
-add_definitions("-mssse3 -DHAVE_OPENCV")
+add_definitions("-DHAVE_OPENCV -mfpu=neon")
include_directories(${CATKIN_DEVEL_PREFIX}/include)
@@ -22,7 +22,6 @@ cs_add_library(${PROJECT_NAME} src/brisk-descriptor-extractor.cc
src/brisk-opencv.cc
src/brisk-scale-space.cc
src/brute-force-matcher.cc
- src/camera-aware-feature.cc
src/harris-feature-detector.cc
src/harris-score-calculator.cc
src/harris-score-calculator-float.cc
@@ -31,11 +30,10 @@ cs_add_library(${PROJECT_NAME} src/brisk-descriptor-extractor.cc
src/pattern-provider.cc
src/vectorized-filters.cc
src/test/image-io.cc
- src/timer.cc
- src/brisk-v1.cc)
+ src/timer.cc)
-cs_add_executable(camera src/test-cameras.cc)
-target_link_libraries(camera ${PROJECT_NAME})
+#cs_add_executable(camera src/test-cameras.cc)
+#target_link_libraries(camera ${PROJECT_NAME})
# Testing.
##########
diff --git a/internal/ethzasl_brisk/brisk/cmake/export_flags.cmake b/internal/ethzasl_brisk/brisk/cmake/export_flags.cmake
index 3a67608..250705d 100644
--- a/internal/ethzasl_brisk/brisk/cmake/export_flags.cmake
+++ b/internal/ethzasl_brisk/brisk/cmake/export_flags.cmake
@@ -1,4 +1,2 @@
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OPENCV -std=c++0x")
-if (NOT ANDROID)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3")
-endif()
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
diff --git a/internal/ethzasl_brisk/brisk_ros_demo/CMakeLists.txt b/internal/ethzasl_brisk/brisk_ros_demo/CMakeLists.txt
index 6b4e9ab..f1bebc4 100644
--- a/internal/ethzasl_brisk/brisk_ros_demo/CMakeLists.txt
+++ b/internal/ethzasl_brisk/brisk_ros_demo/CMakeLists.txt
@@ -4,7 +4,7 @@ project(brisk_ros_demo)
find_package(catkin_simple REQUIRED)
catkin_simple(ALL_DEPS_REQUIRED)
-add_definitions(-msse2 -mssse3 -march=native -Wextra -Wall
+add_definitions(-msse2 -march=native -Wextra -Wall
-Wno-overloaded-virtual -Wno-non-virtual-dtor # OpenCV.
-std=c++0x -DENABLE_BRISK_TIMING -DTEST_IN_SOURCE
-DHAVE_OPENCV)
Submodule internal/maplab_rovio contains modified content
diff --git a/internal/maplab_rovio/CMakeLists.txt b/internal/maplab_rovio/CMakeLists.txt
index b487b46..7ff35d8 100644
--- a/internal/maplab_rovio/CMakeLists.txt
+++ b/internal/maplab_rovio/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required (VERSION 2.6)
project(rovio)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -mssse3")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(ROVIO_NMAXFEATURE 25 CACHE STRING "Number of features for ROVIO")
set(ROVIO_NCAM 1 CACHE STRING "Number of enabled cameras")
set(ROVIO_NLEVELS 4 CACHE STRING "Number of image leavels for the features")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment