Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
  • Sign in / Register
  • eigen eigen
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 664
    • Issues 664
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Custom issue tracker
    • Custom issue tracker
  • Merge requests 19
    • Merge requests 19
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • libeigenlibeigen
  • eigeneigen
  • Issues
  • #466
Closed
Open
Created Dec 04, 2019 by Eigen Bugzilla@eigenbzReporter

helgrind race condition warnings using openmp

Submitted by Bowie Owens

Assigned to Nobody

Link to original bugzilla bug (#466)
Version: 3.0

Description

I get warnings like the following when I run my program under helgrind using Eigen and openmp. I think I have been able to eliminate the warnings by following the change specified at http://stackoverflow.com/a/10540025/453436

==13966== ----------------------------------------------------------------
==13966==
==13966== Possible data race during read of size 8 at 0xAA8A60 by thread #7 (closed)
==13966== Locks held: none
==13966== at 0x4874D2: Eigen::internal::manage_caching_sizes(Eigen::Action, long*, long*) (GeneralBlockPanelKernel.h:55)
==13966== by 0x4BE35B: void Eigen::internal::computeProductBlockingSizes<double, double, 4>(long&, long&, long&) (GeneralBlockPanelKernel.h:99)
==13966== by 0x4BA1C5: Eigen::internal::triangular_solve_matrix<double, long, 1, 5, false, 0, 0>::run(long, long, double const*, long, double*, long) (TriangularSolverMatrix.h:71)
==13966== by 0x4B708C: Eigen::internal::triangular_solver_selector<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1> const, -1, -1, false, true> const, Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false, true>, 1, 5, 0, -1>::run(Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1> const, -1, -1, false, true> const&, Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false, true>&) (SolveTriangular.h:104)
==13966== by 0x4B37ED: void Eigen::TriangularView<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1> const, -1, -1, false, true> const, 5u>::solveInPlace<1, Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false, true> >(Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false, true> > const&) const (SolveTriangular.h:190)
==13966== by 0x4AF09E: void Eigen::TriangularView<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1> const, -1, -1, false, true> const, 5u>::solveInPlace<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false, true> >(Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false, true> > const&) const (TriangularMatrix.h:356)
==13966== by 0x4A76FA: void Eigen::internal::solve_retval<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > >::evalTo<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&) const (FullPivLU.h:704)
==13966== by 0x49FD14: void Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > >::evalTo<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&) const (Solve.h:64)
==13966== by 0x49AB30: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > >::evalTo<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&) const (ReturnByValue.h:74)
==13966== by 0x495C0C: Eigen::Matrix<double, -1, -1, 0, -1, -1>::Matrix<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > > const&) (Matrix.h:309)
==13966== by 0x491B6B: Eigen::ProductBase<Eigen::GeneralProduct<Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > >, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const, Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 4> const>, 4>, Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > >, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const, Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 4> const> >::ProductBase(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > > const&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const, Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 4> const> const&) (ProductBase.h:104)
==13966== by 0x48D62C: Eigen::GeneralProduct<Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > >, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const, Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 4> const>, 4>::GeneralProduct(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::FullPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > > const&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const, Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 4> const> const&) (Product.h:327)
==13966==
==13966== This conflicts with a previous write of size 8 by thread #1 (closed)
==13966== Locks held: none
==13966== at 0x487478: Eigen::internal::manage_caching_sizes(Eigen::Action, long*, long*) (GeneralBlockPanelKernel.h:42)
==13966== by 0x4A4736: void Eigen::internal::computeProductBlockingSizes<double, double, 1>(long&, long&, long&) (GeneralBlockPanelKernel.h:99)
==13966== by 0x49DE15: void Eigen::internal::computeProductBlockingSizes<double, double>(long&, long&, long&) (GeneralBlockPanelKernel.h:108)
==13966== by 0x498C9C: Eigen::internal::gemm_blocking_space<0, double, double, 2, 2, -1, false>::gemm_blocking_space(long, long, long) (GeneralMatrixMatrix.h:350)
==13966== by 0x49400D: void Eigen::GeneralProduct<Eigen::Transpose<Eigen::Matrix<double, -1, 2, 0, -1, 2> >, Eigen::Matrix<double, -1, 2, 0, -1, 2>, 5>::scaleAndAddTo<Eigen::Matrix<double, 2, 2, 0, 2, 2> >(Eigen::Matrix<double, 2, 2, 0, 2, 2>&, double) const (GeneralMatrixMatrix.h:433)
==13966== by 0x48FC2E: void Eigen::ProductBase<Eigen::GeneralProduct<Eigen::Transpose<Eigen::Matrix<double, -1, 2, 0, -1, 2> >, Eigen::Matrix<double, -1, 2, 0, -1, 2>, 5>, Eigen::Transpose<Eigen::Matrix<double, -1, 2, 0, -1, 2> >, Eigen::Matrix<double, -1, 2, 0, -1, 2> >::scaleAndAddTo<Eigen::Matrix<double, 2, 2, 0, 2, 2> >(Eigen::Matrix<double, 2, 2, 0, 2, 2>&, double) const (ProductBase.h:124)
==13966== by 0x48B7A4: void Eigen::ProductBase<Eigen::GeneralProduct<Eigen::Transpose<Eigen::Matrix<double, -1, 2, 0, -1, 2> >, Eigen::Matrix<double, -1, 2, 0, -1, 2>, 5>, Eigen::Transpose<Eigen::Matrix<double, -1, 2, 0, -1, 2> >, Eigen::Matrix<double, -1, 2, 0, -1, 2> >::evalTo<Eigen::Matrix<double, 2, 2, 0, 2, 2> >(Eigen::Matrix<double, 2, 2, 0, 2, 2>&) const (ProductBase.h:115)
==13966== by 0x48859A: Eigen::ProductBase<Eigen::GeneralProduct<Eigen::Transpose<Eigen::Matrix<double, -1, 2, 0, -1, 2> >, Eigen::Matrix<double, -1, 2, 0, -1, 2>, 5>, Eigen::Transpose<Eigen::Matrix<double, -1, 2, 0, -1, 2> >, Eigen::Matrix<double, -1, 2, 0, -1, 2> >::operator Eigen::Matrix<double, 2, 2, 0, 2, 2> const&() const (ProductBase.h:133)

Edited Dec 05, 2019 by Eigen Bugzilla
Assignee
Assign to
Time tracking