Fix warnings and 2D compilation when parallelism is ON but SIMD is OFF.

This commit is contained in:
Crozet Sébastien
2021-01-23 12:58:45 +01:00
parent 57072f3ba7
commit 00caa7ce35
7 changed files with 13 additions and 65 deletions

View File

@@ -50,24 +50,6 @@ pub(crate) enum AnyJointPositionConstraint {
}
impl AnyJointPositionConstraint {
#[cfg(feature = "parallel")]
pub fn num_active_constraints(joint: &Joint, grouped: bool) -> usize {
#[cfg(feature = "simd-is-enabled")]
if !grouped {
1
} else {
match &joint.params {
JointParams::BallJoint(_) => 1,
_ => SIMD_WIDTH, // For joints that don't support SIMD position constraints yet.
}
}
#[cfg(not(feature = "simd-is-enabled"))]
{
1
}
}
pub fn from_joint(joint: &Joint, bodies: &RigidBodySet) -> Self {
let rb1 = &bodies[joint.body1];
let rb2 = &bodies[joint.body2];

View File

@@ -1,29 +1,11 @@
use super::ParallelInteractionGroups;
use super::{AnyJointPositionConstraint, AnyPositionConstraint, ThreadContext};
use crate::dynamics::solver::categorization::categorize_joints;
use crate::dynamics::solver::{
AnyJointVelocityConstraint, AnyVelocityConstraint, InteractionGroups,
ParallelSolverConstraints, PositionConstraint, PositionGroundConstraint,
AnyJointVelocityConstraint, AnyVelocityConstraint, ParallelSolverConstraints,
};
use crate::dynamics::{IntegrationParameters, JointGraphEdge, RigidBodySet};
use crate::geometry::ContactManifold;
use crate::dynamics::IntegrationParameters;
use crate::math::{Isometry, Real};
#[cfg(feature = "simd-is-enabled")]
use crate::{
dynamics::solver::{WPositionConstraint, WPositionGroundConstraint},
math::SIMD_WIDTH,
};
use std::sync::atomic::Ordering;
pub(crate) enum PositionConstraintDesc {
NongroundNongrouped(usize),
GroundNongrouped(usize),
#[cfg(feature = "simd-is-enabled")]
NongroundGrouped([usize; SIMD_WIDTH]),
#[cfg(feature = "simd-is-enabled")]
GroundGrouped([usize; SIMD_WIDTH]),
}
pub(crate) struct ParallelPositionSolver;
impl ParallelPositionSolver {

View File

@@ -1,17 +1,19 @@
use super::ParallelInteractionGroups;
use super::{AnyJointVelocityConstraint, AnyVelocityConstraint, DeltaVel, ThreadContext};
use super::{AnyJointVelocityConstraint, AnyVelocityConstraint, ThreadContext};
use crate::dynamics::solver::categorization::{categorize_contacts, categorize_joints};
use crate::dynamics::solver::{
AnyJointPositionConstraint, AnyPositionConstraint, InteractionGroups, PositionConstraint,
PositionGroundConstraint, VelocityConstraint, VelocityGroundConstraint, WPositionConstraint,
WPositionGroundConstraint,
PositionGroundConstraint, VelocityConstraint, VelocityGroundConstraint,
};
use crate::dynamics::{IntegrationParameters, JointGraphEdge, RigidBodySet};
use crate::geometry::ContactManifold;
#[cfg(feature = "simd-is-enabled")]
use crate::{
dynamics::solver::{WVelocityConstraint, WVelocityGroundConstraint},
math::{Real, SIMD_WIDTH},
dynamics::solver::{
WPositionConstraint, WPositionGroundConstraint, WVelocityConstraint,
WVelocityGroundConstraint,
},
math::SIMD_WIDTH,
};
use std::sync::atomic::Ordering;

View File

@@ -1,18 +1,10 @@
use super::ParallelInteractionGroups;
use super::{AnyJointVelocityConstraint, AnyVelocityConstraint, DeltaVel, ThreadContext};
use crate::dynamics::solver::categorization::{categorize_contacts, categorize_joints};
use crate::dynamics::solver::parallel_solver_constraints::ConstraintDesc;
use crate::dynamics::solver::{
AnyJointPositionConstraint, AnyPositionConstraint, InteractionGroups,
ParallelSolverConstraints, VelocityConstraint, VelocityGroundConstraint,
AnyJointPositionConstraint, AnyPositionConstraint, ParallelSolverConstraints,
};
use crate::dynamics::{IntegrationParameters, JointGraphEdge, RigidBodySet};
use crate::dynamics::{IntegrationParameters, JointGraphEdge};
use crate::geometry::ContactManifold;
#[cfg(feature = "simd-is-enabled")]
use crate::{
dynamics::solver::{WVelocityConstraint, WVelocityGroundConstraint},
math::{Real, SIMD_WIDTH},
};
use crate::math::Real;
use std::sync::atomic::Ordering;
pub(crate) struct ParallelVelocitySolver {}

View File

@@ -51,12 +51,6 @@ pub(crate) struct PositionConstraint {
}
impl PositionConstraint {
#[cfg(feature = "parallel")]
pub fn num_active_constraints(manifold: &ContactManifold) -> usize {
let rest = manifold.data.solver_contacts.len() % MAX_MANIFOLD_POINTS != 0;
manifold.data.solver_contacts.len() / MAX_MANIFOLD_POINTS + rest as usize
}
pub fn generate(
params: &IntegrationParameters,
manifold: &ContactManifold,

View File

@@ -25,8 +25,6 @@ pub extern crate nalgebra as na;
#[cfg(feature = "serde")]
#[macro_use]
extern crate serde;
#[macro_use]
extern crate approx;
extern crate num_traits as num;
// #[macro_use]
// extern crate array_macro;
@@ -51,6 +49,7 @@ macro_rules! enable_flush_to_zero(
}
);
#[cfg(feature = "simd-is-enabled")]
macro_rules! array(
($callback: expr; SIMD_WIDTH) => {
{

View File

@@ -67,9 +67,6 @@ type Callbacks = Vec<
#[allow(dead_code)]
impl Harness {
pub fn new_empty() -> Self {
#[cfg(feature = "parallel")]
let num_threads = num_cpus::get_physical();
let contact_channel = crossbeam::channel::unbounded();
let proximity_channel = crossbeam::channel::unbounded();
let event_handler = ChannelEventCollector::new(proximity_channel.0, contact_channel.0);