From 71edf37f648030f582778abcf100960f844e1682 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel <guilhem.saurel@gmail.com> Date: Mon, 23 Jul 2018 14:14:14 +0200 Subject: [PATCH] google benchmark --- .gitmodules | 6 ++++++ CMakeLists.txt | 3 ++- README.md | 24 +++++++++++++++++------ benchmark | 1 + src/CMakeLists.txt | 6 ++++++ src/pinocchio-benchmark.cpp | 38 +++++++++++++++++++++++++++++++++++++ 6 files changed, 71 insertions(+), 7 deletions(-) create mode 160000 benchmark create mode 100644 src/pinocchio-benchmark.cpp diff --git a/.gitmodules b/.gitmodules index 1571b0d..40ee538 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,9 @@ [submodule "libs/pinocchio"] path = libs/pinocchio url = https://github.com/stack-of-tasks/pinocchio.git +[submodule "benchmark"] + path = benchmark + url = https://github.com/google/benchmark.git +[submodule "googletest"] + path = googletest + url = https://github.com/google/googletest.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 43773d2..c502dcb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.1) SET (CXX_DISABLE_WERROR ON) -set (CMAKE_CXX_STANDARD 11) INCLUDE(cmake/base.cmake) @@ -16,6 +15,8 @@ ADD_REQUIRED_DEPENDENCY("eigen3") ADD_REQUIRED_DEPENDENCY("pinocchio") ADD_REQUIRED_DEPENDENCY("rbdl") ADD_REQUIRED_DEPENDENCY("orocos-kdl") +ADD_REQUIRED_DEPENDENCY("urdfdom") +ADD_REQUIRED_DEPENDENCY("benchmark") ADD_SUBDIRECTORY("src") diff --git a/README.md b/README.md index 8071ad2..96a0d6b 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ git submodule update --init --recursive ``` mkdir -p build/pinocchio pushd build/pinocchio -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_CXX_STANDARD=11 ../../libs/pinocchio +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib -DBUILD_PYTHON_INTERFACE=OFF -DBUILD_UNIT_TESTS=OFF ../../libs/pinocchio make -j8 install popd ``` @@ -44,7 +44,7 @@ popd ``` mkdir -p build/kdl pushd build/kdl -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX ../../libs/kdl/orocos_kdl +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib ../../libs/kdl/orocos_kdl make -j8 install popd ``` @@ -67,7 +67,19 @@ mv rbdl-rbdl-* libs/rbdl ``` mkdir -p build/rbdl pushd build/rbdl -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DRBDL_BUILD_ADDON_URDFREADER=ON ../../libs/rbdl +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib -DRBDL_BUILD_ADDON_URDFREADER=ON ../../libs/rbdl +make -j8 install +popd +``` + +## Google Benchmark + +### Installing + +``` +mkdir -p build/google-benchmark +pushd build/google-benchmark +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib -DBENCHMARK_ENABLE_GTEST_TESTS=OFF ../../benchmark make -j8 install popd ``` @@ -77,9 +89,9 @@ popd ### Installing ``` -mkdir -p build/benchmarks -pushd build/benchmarks -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_PREFIX_PATH=$PREFIX ../.. +mkdir -p build/pinocchio-benchmarks +pushd build/pinocchio-benchmarks +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_PREFIX_PATH=$PREFIX ../.. make -j8 install popd ``` diff --git a/benchmark b/benchmark new file mode 160000 index 0000000..1f35fa4 --- /dev/null +++ b/benchmark @@ -0,0 +1 @@ +Subproject commit 1f35fa4aa71bffb5e5672f7ca876561d6adef4fd diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 58b9779..fc15aca 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,3 +8,9 @@ INSTALL(TARGETS rbdl-bench RUNTIME DESTINATION bin) ADD_EXECUTABLE(pinocchio-bench pinocchio-bench) PKG_CONFIG_USE_DEPENDENCY(pinocchio-bench pinocchio) INSTALL(TARGETS pinocchio-bench RUNTIME DESTINATION bin) + +# Pinocchio & benchmark +ADD_EXECUTABLE(pinocchio-benchmark pinocchio-benchmark) +PKG_CONFIG_USE_DEPENDENCY(pinocchio-bench pinocchio) +PKG_CONFIG_USE_DEPENDENCY(pinocchio-bench benchmark) +INSTALL(TARGETS pinocchio-benchmark RUNTIME DESTINATION bin) diff --git a/src/pinocchio-benchmark.cpp b/src/pinocchio-benchmark.cpp new file mode 100644 index 0000000..5f1c68b --- /dev/null +++ b/src/pinocchio-benchmark.cpp @@ -0,0 +1,38 @@ +#include <iostream> +#include <fstream> + +#include <benchmark/benchmark.h> + +#include <pinocchio/multibody/model.hpp> +#include <pinocchio/parsers/urdf.hpp> +#include <pinocchio/algorithm/rnea.hpp> +#include <pinocchio/algorithm/aba.hpp> + +static void BM_Pinocchio_RNEA(benchmark::State& state) +{ + se3::Model model; + + // Load an urdf file provided by the user + se3::urdf::buildModel("models/simple_humanoid.urdf", se3::JointModelFreeFlyer(), model); + std::cout << "Pinocchio Benchmark" << std::endl; + std::cout << " model: " << "models/simple_humanoid.urdf" << std::endl; + std::cout << " nq: " << model.nq << std::endl; + std::cout << " nv: " << model.nv << std::endl; + + se3::Data data(model); + + for (auto _: state) + { + Eigen::VectorXd q = Eigen::VectorXd::Random(model.nq); + Eigen::VectorXd qdot = Eigen::VectorXd::Random(model.nv); + Eigen::VectorXd tau = Eigen::VectorXd::Random(model.nv); + Eigen::VectorXd qddot = Eigen::VectorXd::Random(model.nv); + + se3::aba(model, data, q, qdot, tau); + //std::cout << "qddot after ABA: " << data.ddq.transpose() << std::endl; + } +} + +BENCHMARK(BM_Pinocchio_RNEA); + +BENCHMARK_MAIN(); -- GitLab