Last active
December 7, 2017 09:52
-
-
Save Alabate/c1017c4f0a6c3b9e5e6db75ddbcddf0b to your computer and use it in GitHub Desktop.
ARM hack in ethz-asl/maplab
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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