Changes in order to make use of the new aoptimised address set in calibration
Change the set type to isize as it is a set of offsets Change Calibrate two threads to make use of it
This commit is contained in:
parent
b815fd34ff
commit
ebc304d55a
@ -664,7 +664,17 @@ fn calibrate_fixed_freq_2_thread_impl<I: Iterator<Item = (usize, usize)>>(
|
|||||||
// do the calibration
|
// do the calibration
|
||||||
let mut calibrate_result_vec = Vec::new();
|
let mut calibrate_result_vec = Vec::new();
|
||||||
|
|
||||||
for i in (0..len).step_by(increment) {
|
let image_antecedent = match slicing {
|
||||||
|
Some(s) => s.image_antecedent(len as usize - 1),
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
|
||||||
|
let offsets: Box<dyn Iterator<Item = isize>> = match image_antecedent {
|
||||||
|
Some(ima) => Box::new(ima.into_iter().map(|(_k, v)| v)),
|
||||||
|
None => Box::new((0..len as isize).step_by(increment)),
|
||||||
|
};
|
||||||
|
|
||||||
|
for i in offsets {
|
||||||
let pointer = unsafe { p.offset(i) };
|
let pointer = unsafe { p.offset(i) };
|
||||||
helper_thread_params
|
helper_thread_params
|
||||||
.address
|
.address
|
||||||
|
@ -135,7 +135,7 @@ impl CacheSlicing {
|
|||||||
|
|
||||||
// Only works for Complex Addressing rn
|
// Only works for Complex Addressing rn
|
||||||
// May work in the future for simple.
|
// May work in the future for simple.
|
||||||
fn pivot(&self, mask: usize) -> Vec<(u8, usize)> {
|
fn pivot(&self, mask: isize) -> Vec<(u8, isize)> {
|
||||||
match self {
|
match self {
|
||||||
ComplexAddressing(functions) => {
|
ComplexAddressing(functions) => {
|
||||||
let mut matrix = Vec::new();
|
let mut matrix = Vec::new();
|
||||||
@ -144,7 +144,7 @@ impl CacheSlicing {
|
|||||||
let mut hashspace = 0;
|
let mut hashspace = 0;
|
||||||
while i != 0 {
|
while i != 0 {
|
||||||
if i & mask != 0 {
|
if i & mask != 0 {
|
||||||
let h = self.hash(i).unwrap();
|
let h = self.hash(i as usize).unwrap();
|
||||||
|
|
||||||
hashspace |= h;
|
hashspace |= h;
|
||||||
matrix.push((h, i));
|
matrix.push((h, i));
|
||||||
@ -199,7 +199,7 @@ impl CacheSlicing {
|
|||||||
pub fn image(&self, mask: usize) -> Option<HashSet<u8>> {
|
pub fn image(&self, mask: usize) -> Option<HashSet<u8>> {
|
||||||
match self {
|
match self {
|
||||||
ComplexAddressing(_functions) => {
|
ComplexAddressing(_functions) => {
|
||||||
let matrix = self.pivot(mask);
|
let matrix = self.pivot(mask as isize);
|
||||||
|
|
||||||
let mut result = HashSet::<u8>::new();
|
let mut result = HashSet::<u8>::new();
|
||||||
result.insert(0);
|
result.insert(0);
|
||||||
@ -217,10 +217,10 @@ impl CacheSlicing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn kernel_compl_basis(&self, mask: usize) -> Option<HashMap<u8, usize>> {
|
pub fn kernel_compl_basis(&self, mask: usize) -> Option<HashMap<u8, isize>> {
|
||||||
match self {
|
match self {
|
||||||
ComplexAddressing(_functions) => {
|
ComplexAddressing(_functions) => {
|
||||||
let matrix = self.pivot(mask);
|
let matrix = self.pivot(mask as isize);
|
||||||
let mut result = HashMap::new();
|
let mut result = HashMap::new();
|
||||||
for (slice, addr) in matrix {
|
for (slice, addr) in matrix {
|
||||||
if slice != 0 {
|
if slice != 0 {
|
||||||
@ -233,12 +233,12 @@ impl CacheSlicing {
|
|||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn image_antecedent(&self, mask: usize) -> Option<HashMap<u8, usize>> {
|
pub fn image_antecedent(&self, mask: usize) -> Option<HashMap<u8, isize>> {
|
||||||
match self {
|
match self {
|
||||||
ComplexAddressing(_functions) => {
|
ComplexAddressing(_functions) => {
|
||||||
let matrix = self.pivot(mask);
|
let matrix = self.pivot(mask as isize);
|
||||||
|
|
||||||
let mut result = HashMap::<u8, usize>::new();
|
let mut result = HashMap::<u8, isize>::new();
|
||||||
result.insert(0, 0);
|
result.insert(0, 0);
|
||||||
|
|
||||||
for (slice_u, addr_u) in matrix {
|
for (slice_u, addr_u) in matrix {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user