From 7586b47dedb6561d4f51d09dfc940c89ec0f7f0d Mon Sep 17 00:00:00 2001 From: Sergei_Nikolaev Date: Fri, 8 Jul 2022 07:32:20 +0200 Subject: [PATCH] V21.12 (#16) * FIX: add ci.yml workflow to compile plugin for different platforms and build/test corrections --- .github/workflows/ci.yml | 202 ++++++++++++++++++ .../workflows/{ubuntu.yml => ubuntu.yml_old} | 2 +- CMakeLists.txt | 38 +++- OptimusConfig.cmake.in | 9 + .../verify.sh | 2 +- .../verify.sh | 2 +- benchmarks/assimBC_synthBrick/verify.sh | 2 +- .../verify.sh | 2 +- .../verify.sh | 2 +- .../verify.sh | 2 +- .../assimStiffness_cylinder_yaml/verify.sh | 2 +- benchmarks/crontask/runOptimusTests.sh | 2 +- .../runOptimusTests_without_compiling.sh | 2 +- src/initOptimusPlugin.cpp | 98 ++++----- src/initOptimusPlugin.h | 22 +- 15 files changed, 309 insertions(+), 80 deletions(-) create mode 100644 .github/workflows/ci.yml rename .github/workflows/{ubuntu.yml => ubuntu.yml_old} (98%) create mode 100644 OptimusConfig.cmake.in diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b888412 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,202 @@ +name: Benchmark_tests + +on: + workflow_dispatch: + pull_request: + push: + #schedule: + # - cron: '00 2 * * *' + + +jobs: + build_and_test: + name: Building on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04, macos-10.15, windows-2019] + sofa_branch: [v21.12] # master + python-version: ['3.10'] + + steps: + - name: Setup SOFA and environment + id: sofa + uses: sofa-framework/sofa-setup-action@v4 + with: + sofa_root: /opt/sofa + sofa_version: ${{ matrix.sofa_branch }} + sofa_scope: 'standard' + + - name: Checkout source code + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install requirements + shell: bash + run: | + if [[ "$RUNNER_OS" == "Windows" ]]; then + EIGEN_VERSION=3.4.0 + EIGEN_INSTALL_DIR="C:/eigen" + if ! ls -a "$EIGEN_INSTALL_DIR"/* >/dev/null 2>&1; then + # directory does not exist or is empty + mkdir -p "$EIGEN_INSTALL_DIR" + curl --output "${{ runner.temp }}/eigen_tmp.zip" -L \ + "https://gitlab.com/libeigen/eigen/-/archive/${EIGEN_VERSION}/eigen-${EIGEN_VERSION}.zip" + unzip -qq "${{ runner.temp }}/eigen_tmp.zip" -d "${{ runner.temp }}/eigen_tmp" + mv "${{ runner.temp }}"/eigen_tmp/eigen-*/* $EIGEN_INSTALL_DIR + fi + mkdir $EIGEN_INSTALL_DIR/build_release \ + && cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \ + && cd /d $EIGEN_INSTALL_DIR/build_release \ + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \ + && ninja install" + elif [[ "$RUNNER_OS" == "macOS" ]]; then + brew install eigen + elif [[ "$RUNNER_OS" == "Linux" ]]; then + sudo apt install -qq libeigen3-dev libblas-dev libglew-dev + fi + python3 -m pip install --upgrade pip + python3 -m pip install numpy pyyaml + + - name: Build pybind11 + shell: bash + run: | + if [[ "$RUNNER_OS" == "Windows" ]]; then + PYBIND_INSTALL_PATH="C:/pybind11" \ + && git clone -b v2.8 --depth 1 https://github.com/pybind/pybind11.git $PYBIND_INSTALL_PATH \ + && cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \ + && cd /d $PYBIND_INSTALL_PATH \ + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DPYBIND11_TEST=OFF . \ + && ninja install" + else + PYBIND_INSTALL_PATH="/tmp/pybind11" + git clone -b v2.8 --depth 1 https://github.com/pybind/pybind11.git $PYBIND_INSTALL_PATH + cd $PYBIND_INSTALL_PATH + echo "Curent plugin branch is:" && git branch --show-current + cmake -DCMAKE_BUILD_TYPE=Release -DPYBIND11_TEST=OFF . + make + sudo make install + fi + + - name: Build python3 plugin + shell: bash + run: | + if [[ "$RUNNER_OS" == "Windows" ]]; then + SOFA_PYTHON3_ROOT="C:/SofaPython3" \ + && git clone --branch ${{ steps.sofa.outputs.sofa_version }} https://github.com/sofa-framework/SofaPython3.git $SOFA_PYTHON3_ROOT \ + && mkdir $SOFA_PYTHON3_ROOT/build_release \ + && cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \ + && cd /d $SOFA_PYTHON3_ROOT/build_release \ + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DPYTHON_ROOT=$PYTHON_ROOT -DPython_ROOT=$PYTHON_ROOT -DPYTHON_EXECUTABLE=$PYTHON_ROOT/python.exe \ + -DPython_EXECUTABLE=$PYTHON_ROOT/python.exe -DCMAKE_PREFIX_PATH="$SOFA_ROOT/build_release/install" .. \ + && ninja install" + else + export SOFA_PYTHON3_ROOT=/tmp/SofaPython3 + git clone --branch ${{ steps.sofa.outputs.sofa_version }} https://github.com/sofa-framework/SofaPython3.git $SOFA_PYTHON3_ROOT + mkdir $SOFA_PYTHON3_ROOT/build_release + cd $SOFA_PYTHON3_ROOT/build_release + echo "Curent plugin branch is:" && git branch --show-current + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$SOFA_ROOT/build_release/install .. + make -j 8 + make install + fi + + - name: Build Optimus + shell: bash + run: | + if [[ "$RUNNER_OS" == "Windows" ]]; then + EIGEN_INSTALL_DIR="C:/eigen" \ + && echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE" \ + && mkdir $GITHUB_WORKSPACE/build_release \ + && cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \ + && cd /d $GITHUB_WORKSPACE/build_release \ + && cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DUSE_BLAS_FOR_OPTIMUS=0 \ + -DCMAKE_PREFIX_PATH="$SOFA_ROOT/build_release/install";$EIGEN_INSTALL_DIR/build_release .. \ + && ninja install" + else + mkdir $GITHUB_WORKSPACE/build_release + cd $GITHUB_WORKSPACE/build_release + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$SOFA_ROOT/build_release/install .. + make -j 8 + make install + fi + + - name: Create artifact + uses: actions/upload-artifact@v2 + with: + name: Optimus_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }} + path: ${{ github.workspace }}/build_release/install + + - name: Install artifact + uses: actions/download-artifact@v2 + with: + name: Optimus_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }} + path: ${{ github.workspace }}/build_release/install + + - name: Optimus tests + shell: bash + run: | + if [[ "$RUNNER_OS" == "Windows" ]]; then + echo "Skip tests for windows system" + else + export SOFA_PYTHON3_ROOT=/tmp/SofaPython3 + export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/build_release + export SOFA_PLUGIN_PATH=$GITHUB_WORKSPACE/build_release + FOLDER_LIST=`find $GITHUB_WORKSPACE/benchmarks -maxdepth 1` + for FOLDER in $FOLDER_LIST; do + if [ -f $FOLDER/verify.sh ]; then + cd $FOLDER + echo "Perform test: $FOLDER" + if [[ "$RUNNER_OS" == "macOS" ]]; then + $FOLDER/verify.sh $SOFA_ROOT/bin/runSofa $SOFA_PYTHON3_ROOT/build_release/lib/libSofaPython3.dylib + else + $FOLDER/verify.sh $SOFA_ROOT/bin/runSofa $SOFA_PYTHON3_ROOT/build_release/lib/libSofaPython3.so + fi + fi + done + echo "All tests have been executed" + fi + + + deploy: + name: Deploy artifacts + if: always() && startsWith(github.ref, 'refs/heads/') # we are on a branch (not a PR) + needs: [build_and_test] + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: Get artifacts + uses: actions/download-artifact@v2 + with: + path: artifacts + + - name: Zip artifacts + shell: bash + run: | + cd $GITHUB_WORKSPACE/artifacts + for artifact in *; do + zip $artifact.zip -r $artifact/* + done + + - name: Delete old release + uses: dev-drprasad/delete-tag-and-release@v0.2.0 + with: + delete_release: true + tag_name: release-${{ github.ref_name }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload release + uses: softprops/action-gh-release@v1 + with: + name: ${{ github.ref_name }} + tag_name: release-${{ github.ref_name }} + fail_on_unmatched_files: true + files: | + artifacts/Optimus_*_Linux.zip + artifacts/Optimus_*_macOS.zip diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml_old similarity index 98% rename from .github/workflows/ubuntu.yml rename to .github/workflows/ubuntu.yml_old index 7e47838..a779831 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml_old @@ -95,7 +95,7 @@ jobs: if [ -f $FOLDER/verify.sh ]; then cd $FOLDER echo "Perform test: $FOLDER" - $FOLDER/verify.sh $SOFA_BUILD_DIRECTORY/bin/runSofa $SOFA_PYTHON3_BUILD_DIRECTORY/lib + $FOLDER/verify.sh $SOFA_BUILD_DIRECTORY/bin/runSofa $SOFA_PYTHON3_BUILD_DIRECTORY/lib/libSofaPython3.so fi done echo "All tests have been executed" diff --git a/CMakeLists.txt b/CMakeLists.txt index 751c0e2..d618648 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,11 @@ -cmake_minimum_required(VERSION 3.1) -project(Optimus) +cmake_minimum_required(VERSION 3.8) set(OPTIMUS_MAJOR_VERSION 1) set(OPTIMUS_MINOR_VERSION 1) set(OPTIMUS_VERSION ${OPTIMUS_MAJOR_VERSION}.${OPTIMUS_MINOR_VERSION}) +project(Optimus VERSION ${OPTIMUS_VERSION}) + # required standard set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -171,9 +172,9 @@ else() message("SofaPardisoSolver not found, PardisoSolver component will not work") endif() -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") +target_include_directories(${PROJECT_NAME} PUBLIC "$") target_include_directories(${PROJECT_NAME} PUBLIC "$") -target_include_directories(${PROJECT_NAME} PUBLIC "$") +target_include_directories(${PROJECT_NAME} PUBLIC "$") set_target_properties(${PROJECT_NAME} PROPERTIES VERSION "${OPTIMUS_VERSION}") set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${COMPILATION_FLAGS}") set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${HEADER_FILES}") @@ -183,9 +184,26 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") get_target_property(compile_defs ${PROJECT_NAME} COMPILE_FLAGS) message(STATUS "Compile definitions: ${compile_defs}") -install(TARGETS Optimus - EXPORT OptimusTargets - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - PUBLIC_HEADER DESTINATION include/Optimus) + +# install rules +if( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT ) + set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "Install path prefix, prepended onto install directories." FORCE) +endif() +message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") + +sofa_create_package_with_targets( + PACKAGE_NAME ${PROJECT_NAME} + PACKAGE_VERSION ${PROJECT_VERSION} + TARGETS ${PROJECT_NAME} AUTO_SET_TARGET_PROPERTIES + INCLUDE_SOURCE_DIR "src" + INCLUDE_INSTALL_DIR ${PROJECT_NAME} + EXAMPLE_INSTALL_DIR "examples" + RELOCATABLE "plugins" + ) + +#install(TARGETS Optimus +# EXPORT OptimusTargets +# RUNTIME DESTINATION bin +# LIBRARY DESTINATION lib +# ARCHIVE DESTINATION lib +# PUBLIC_HEADER DESTINATION include/Optimus) diff --git a/OptimusConfig.cmake.in b/OptimusConfig.cmake.in new file mode 100644 index 0000000..2da2dcb --- /dev/null +++ b/OptimusConfig.cmake.in @@ -0,0 +1,9 @@ +# Optimus plugin configuration file + +@PACKAGE_INIT@ + +if(NOT TARGET @PROJECT_NAME@) + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +endif() + +check_required_components(@PROJECT_NAME@) diff --git a/benchmarks/assimBC_liver_geomagic_cutting_yaml/verify.sh b/benchmarks/assimBC_liver_geomagic_cutting_yaml/verify.sh index 73e404e..abea22d 100755 --- a/benchmarks/assimBC_liver_geomagic_cutting_yaml/verify.sh +++ b/benchmarks/assimBC_liver_geomagic_cutting_yaml/verify.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $# == "2" ]; then - SOFA_EXEC="$1 -l $2/libSofaPython3.so" + SOFA_EXEC="$1 -l $2" elif [ $# == "1" ]; then SOFA_EXEC="$1 -l libSofaPython3.so" else diff --git a/benchmarks/assimBC_liver_polynomial_springs_point_cloud_yaml/verify.sh b/benchmarks/assimBC_liver_polynomial_springs_point_cloud_yaml/verify.sh index 02c4467..a9a1047 100755 --- a/benchmarks/assimBC_liver_polynomial_springs_point_cloud_yaml/verify.sh +++ b/benchmarks/assimBC_liver_polynomial_springs_point_cloud_yaml/verify.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $# == "2" ]; then - SOFA_EXEC="$1 -l $2/libSofaPython3.so" + SOFA_EXEC="$1 -l $2" elif [ $# == "1" ]; then SOFA_EXEC="$1 -l libSofaPython3.so" else diff --git a/benchmarks/assimBC_synthBrick/verify.sh b/benchmarks/assimBC_synthBrick/verify.sh index cde40a3..eb75d73 100755 --- a/benchmarks/assimBC_synthBrick/verify.sh +++ b/benchmarks/assimBC_synthBrick/verify.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $# == "2" ]; then - SOFA_EXEC="$1 -l $2/libSofaPython3.so" + SOFA_EXEC="$1 -l $2" elif [ $# == "1" ]; then SOFA_EXEC="$1 -l libSofaPython3.so" else diff --git a/benchmarks/assimStiffness_cylinder_UKFSimCorr_yaml/verify.sh b/benchmarks/assimStiffness_cylinder_UKFSimCorr_yaml/verify.sh index 3020d70..c20b6df 100755 --- a/benchmarks/assimStiffness_cylinder_UKFSimCorr_yaml/verify.sh +++ b/benchmarks/assimStiffness_cylinder_UKFSimCorr_yaml/verify.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $# == "2" ]; then - SOFA_EXEC="$1 -l $2/libSofaPython3.so" + SOFA_EXEC="$1 -l $2" elif [ $# == "1" ]; then SOFA_EXEC="$1 -l libSofaPython3.so" else diff --git a/benchmarks/assimStiffness_cylinder_geomagic_yaml/verify.sh b/benchmarks/assimStiffness_cylinder_geomagic_yaml/verify.sh index 2b5e0c0..6468a73 100755 --- a/benchmarks/assimStiffness_cylinder_geomagic_yaml/verify.sh +++ b/benchmarks/assimStiffness_cylinder_geomagic_yaml/verify.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $# == "2" ]; then - SOFA_EXEC="$1 -l $2/libSofaPython3.so" + SOFA_EXEC="$1 -l $2" elif [ $# == "1" ]; then SOFA_EXEC="$1 -l libSofaPython3.so" else diff --git a/benchmarks/assimStiffness_cylinder_python3_yaml/verify.sh b/benchmarks/assimStiffness_cylinder_python3_yaml/verify.sh index 59415b0..d64952a 100755 --- a/benchmarks/assimStiffness_cylinder_python3_yaml/verify.sh +++ b/benchmarks/assimStiffness_cylinder_python3_yaml/verify.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $# == "2" ]; then - SOFA_EXEC="$1 -l $2/libSofaPython3.so" + SOFA_EXEC="$1 -l $2" elif [ $# == "1" ]; then SOFA_EXEC="$1 -l libSofaPython3.so" else diff --git a/benchmarks/assimStiffness_cylinder_yaml/verify.sh b/benchmarks/assimStiffness_cylinder_yaml/verify.sh index 93c85d9..331b2a7 100755 --- a/benchmarks/assimStiffness_cylinder_yaml/verify.sh +++ b/benchmarks/assimStiffness_cylinder_yaml/verify.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ $# == "2" ]; then - SOFA_EXEC="$1 -l $2/libSofaPython3.so" + SOFA_EXEC="$1 -l $2" elif [ $# == "1" ]; then SOFA_EXEC="$1 -l libSofaPython3.so" else diff --git a/benchmarks/crontask/runOptimusTests.sh b/benchmarks/crontask/runOptimusTests.sh index 7bef8c1..2eee6d1 100755 --- a/benchmarks/crontask/runOptimusTests.sh +++ b/benchmarks/crontask/runOptimusTests.sh @@ -102,7 +102,7 @@ do cd $FOLDER if [ -f $FOLDER/verify.sh ]; then echo "Perform test: $FOLDER" - $FOLDER/verify.sh $BUILD_DIRECTORY/install/bin/runSofa $SOFA_PYTHON3_BUILD_DIRECTORY/lib >> $GENERAL_DIRECTORY/log_`/bin/date +"%Y_%m_%d"`.txt + $FOLDER/verify.sh $BUILD_DIRECTORY/install/bin/runSofa $SOFA_PYTHON3_BUILD_DIRECTORY/lib/libSofaPython3.so >> $GENERAL_DIRECTORY/log_`/bin/date +"%Y_%m_%d"`.txt fi done echo "All tests have been executed" diff --git a/benchmarks/crontask/runOptimusTests_without_compiling.sh b/benchmarks/crontask/runOptimusTests_without_compiling.sh index d27abe1..253feac 100755 --- a/benchmarks/crontask/runOptimusTests_without_compiling.sh +++ b/benchmarks/crontask/runOptimusTests_without_compiling.sh @@ -36,7 +36,7 @@ do cd $FOLDER if [ -f $FOLDER/verify.sh ]; then echo "Perform test: $FOLDER" - $FOLDER/verify.sh $BUILD_DIRECTORY/install/bin/runSofa $SOFA_PYTHON3_BUILD_DIRECTORY/lib >> $GENERAL_DIRECTORY/log_`/bin/date +"%Y_%m_%d"`.txt + $FOLDER/verify.sh $BUILD_DIRECTORY/install/bin/runSofa $SOFA_PYTHON3_BUILD_DIRECTORY/lib/libSofaPython3.so >> $GENERAL_DIRECTORY/log_`/bin/date +"%Y_%m_%d"`.txt fi done echo "All tests have been executed" diff --git a/src/initOptimusPlugin.cpp b/src/initOptimusPlugin.cpp index 0a7663f..ac1e9b4 100644 --- a/src/initOptimusPlugin.cpp +++ b/src/initOptimusPlugin.cpp @@ -86,55 +86,55 @@ namespace component -#ifdef __APPLE__ -int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count) -{ - if(count == 0) - { - errno = EINVAL; - return -1; - } - if(pthread_mutex_init(&barrier->mutex, 0) < 0) - { - return -1; - } - if(pthread_cond_init(&barrier->cond, 0) < 0) - { - pthread_mutex_destroy(&barrier->mutex); - return -1; - } - barrier->tripCount = count; - barrier->count = 0; - - return 0; -} - -int pthread_barrier_destroy(pthread_barrier_t *barrier) -{ - pthread_cond_destroy(&barrier->cond); - pthread_mutex_destroy(&barrier->mutex); - return 0; -} - -int pthread_barrier_wait(pthread_barrier_t *barrier) -{ - pthread_mutex_lock(&barrier->mutex); - ++(barrier->count); - if(barrier->count >= barrier->tripCount) - { - barrier->count = 0; - pthread_cond_broadcast(&barrier->cond); - pthread_mutex_unlock(&barrier->mutex); - return 1; - } - else - { - pthread_cond_wait(&barrier->cond, &(barrier->mutex)); - pthread_mutex_unlock(&barrier->mutex); - return 0; - } -} -#endif +//#ifdef __APPLE__ +//int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count) +//{ +// if(count == 0) +// { +// errno = EINVAL; +// return -1; +// } +// if(pthread_mutex_init(&barrier->mutex, 0) < 0) +// { +// return -1; +// } +// if(pthread_cond_init(&barrier->cond, 0) < 0) +// { +// pthread_mutex_destroy(&barrier->mutex); +// return -1; +// } +// barrier->tripCount = count; +// barrier->count = 0; +// +// return 0; +//} + +//int pthread_barrier_destroy(pthread_barrier_t *barrier) +//{ +// pthread_cond_destroy(&barrier->cond); +// pthread_mutex_destroy(&barrier->mutex); +// return 0; +//} + +//int pthread_barrier_wait(pthread_barrier_t *barrier) +//{ +// pthread_mutex_lock(&barrier->mutex); +// ++(barrier->count); +// if(barrier->count >= barrier->tripCount) +// { +// barrier->count = 0; +// pthread_cond_broadcast(&barrier->cond); +// pthread_mutex_unlock(&barrier->mutex); +// return 1; +// } +// else +// { +// pthread_cond_wait(&barrier->cond, &(barrier->mutex)); +// pthread_mutex_unlock(&barrier->mutex); +// return 0; +// } +//} +//#endif diff --git a/src/initOptimusPlugin.h b/src/initOptimusPlugin.h index b1a3822..3ee9a30 100644 --- a/src/initOptimusPlugin.h +++ b/src/initOptimusPlugin.h @@ -27,19 +27,19 @@ #include //#include /* pthread_t, pthread_barrier_t */ -#include +//#include #include -#ifdef __APPLE__ -typedef int pthread_barrierattr_t; -typedef struct -{ - pthread_mutex_t mutex; - pthread_cond_t cond; - int count; - int tripCount; -} pthread_barrier_t; -#endif +//#ifdef __APPLE__ +//typedef int pthread_barrierattr_t; +//typedef struct +//{ +// pthread_mutex_t mutex; +// pthread_cond_t cond; +// int count; +// int tripCount; +//} pthread_barrier_t; +//#endif //#define SQR(ARG) ((ARG)*(ARG))