From bd4028f5212b68a0caa593b19460ef9880f40134 Mon Sep 17 00:00:00 2001 From: GuillaumeDIDIER Date: Thu, 2 Jul 2020 15:39:37 +0200 Subject: [PATCH] Fix various warnings --- cache_utils/src/bin/frequency_test.rs | 6 ++-- .../src/bin/sleep_freq_test_flush_only.rs | 6 ++-- .../src/bin/sleep_freq_test_reload_only.rs | 6 ++-- cache_utils/src/calibration.rs | 32 ++++++++----------- cache_utils/src/complex_addressing.rs | 2 +- cache_utils/src/lib.rs | 2 ++ 6 files changed, 25 insertions(+), 29 deletions(-) diff --git a/cache_utils/src/bin/frequency_test.rs b/cache_utils/src/bin/frequency_test.rs index f533819..5ad7653 100644 --- a/cache_utils/src/bin/frequency_test.rs +++ b/cache_utils/src/bin/frequency_test.rs @@ -14,7 +14,7 @@ pub fn main() { let mut core = CpuSet::new(); core.set(unsafe { sched_getcpu() } as usize).unwrap(); - sched_setaffinity(Pid::from_raw(0), &core); + sched_setaffinity(Pid::from_raw(0), &core).unwrap(); let t0_pre = unsafe { rdtsc_fence() }; let start = Instant::now(); let t0_post = unsafe { rdtsc_fence() }; @@ -22,7 +22,7 @@ pub fn main() { let mut tsc = t0_post; println!("TSC,Freq"); - for i in 0..NUM_SAMPLE { + for _ in 0..NUM_SAMPLE { //let t1 = unsafe { rdtsc_fence() }; let frequency = get_freq_cpufreq_kernel(); let t2 = unsafe { rdtsc_fence() }; @@ -33,7 +33,7 @@ pub fn main() { } } println!("Idling"); - for i in 0..NUM_SAMPLE_SLEEP { + for _ in 0..NUM_SAMPLE_SLEEP { sleep(Duration::from_micros(1000)); let frequency = get_freq_cpufreq_kernel(); let t2 = unsafe { rdtsc_fence() }; diff --git a/cache_utils/src/bin/sleep_freq_test_flush_only.rs b/cache_utils/src/bin/sleep_freq_test_flush_only.rs index 31c53be..68e8f59 100644 --- a/cache_utils/src/bin/sleep_freq_test_flush_only.rs +++ b/cache_utils/src/bin/sleep_freq_test_flush_only.rs @@ -8,11 +8,11 @@ const SAMPLE_BETWEEN_SLEEP: usize = 100; const NUM_ITERATION: usize = 10; fn main() { - let SLEEP_TIME: Duration = Duration::new(1, 0); + let sleep_time: Duration = Duration::new(1, 0); let p = Box::new(42u8); let pointer = p.as_ref() as *const u8; // preheat - for i in 0..SAMPLE_BETWEEN_SLEEP { + for _ in 0..SAMPLE_BETWEEN_SLEEP { unsafe { only_flush(pointer) }; } @@ -24,7 +24,7 @@ fn main() { for frequency_sample in 0..SAMPLE_BETWEEN_SLEEP { for i in 0..NUM_ITERATION { - sleep(SLEEP_TIME); + sleep(sleep_time); for j in 0..SAMPLE_BETWEEN_SLEEP { if j == frequency_sample { let t = unsafe { rdtsc_fence() }; diff --git a/cache_utils/src/bin/sleep_freq_test_reload_only.rs b/cache_utils/src/bin/sleep_freq_test_reload_only.rs index 26b8896..a7dee0a 100644 --- a/cache_utils/src/bin/sleep_freq_test_reload_only.rs +++ b/cache_utils/src/bin/sleep_freq_test_reload_only.rs @@ -8,11 +8,11 @@ const SAMPLE_BETWEEN_SLEEP: usize = 100; const NUM_ITERATION: usize = 10; fn main() { - let SLEEP_TIME: Duration = Duration::new(1, 0); + let sleep_time: Duration = Duration::new(1, 0); let p = Box::new(42u8); let pointer = p.as_ref() as *const u8; // preheat - for i in 0..SAMPLE_BETWEEN_SLEEP { + for _ in 0..SAMPLE_BETWEEN_SLEEP { unsafe { only_reload(pointer) }; } @@ -24,7 +24,7 @@ fn main() { for frequency_sample in 0..SAMPLE_BETWEEN_SLEEP { for i in 0..NUM_ITERATION { - sleep(SLEEP_TIME); + sleep(sleep_time); for j in 0..SAMPLE_BETWEEN_SLEEP { if j == frequency_sample { let t = unsafe { rdtsc_fence() }; diff --git a/cache_utils/src/calibration.rs b/cache_utils/src/calibration.rs index 803f292..46bcf30 100644 --- a/cache_utils/src/calibration.rs +++ b/cache_utils/src/calibration.rs @@ -1,6 +1,6 @@ #![allow(clippy::missing_safety_doc)] -use crate::complex_addressing::{cache_slicing, CacheSlicing}; +use crate::complex_addressing::{cache_slicing}; use crate::{flush, maccess, rdtsc_fence}; use cpuid::MicroArchitecture; @@ -25,9 +25,9 @@ pub enum Verbosity { } pub struct HistParams { - iterations: u32, - bucket_size: usize, - bucket_number: usize, + pub iterations: u32, + pub bucket_size: usize, + pub bucket_number: usize, } pub unsafe fn only_reload(p: *const u8) -> u64 { @@ -38,9 +38,7 @@ pub unsafe fn only_reload(p: *const u8) -> u64 { pub unsafe fn flush_and_reload(p: *const u8) -> u64 { flush(p); - let t = rdtsc_fence(); - maccess(p); - rdtsc_fence() - t + only_reload(p) } pub unsafe fn only_flush(p: *const u8) -> u64 { @@ -51,16 +49,12 @@ pub unsafe fn only_flush(p: *const u8) -> u64 { pub unsafe fn load_and_flush(p: *const u8) -> u64 { maccess(p); - let t = rdtsc_fence(); - flush(p); - rdtsc_fence() - t + only_flush(p) } pub unsafe fn flush_and_flush(p: *const u8) -> u64 { flush(p); - let t = rdtsc_fence(); - flush(p); - rdtsc_fence() - t + only_flush(p) } pub unsafe fn l3_and_reload(p: *const u8) -> u64 { @@ -68,9 +62,7 @@ pub unsafe fn l3_and_reload(p: *const u8) -> u64 { arch_x86::_mm_mfence(); arch_x86::_mm_prefetch(p as *const i8, arch_x86::_MM_HINT_T2); arch_x86::__cpuid_count(0, 0); - let t = rdtsc_fence(); - maccess(p); - rdtsc_fence() - t + only_reload(p) } const BUCKET_SIZE: usize = 5; @@ -158,10 +150,10 @@ pub fn calibrate_access(array: &[u8; 4096]) -> u64 { (min_i * BUCKET_SIZE) as u64 } -const CFLUSH_BUCKET_SIZE: usize = 1; -const CFLUSH_BUCKET_NUMBER: usize = 500; +pub const CFLUSH_BUCKET_SIZE: usize = 1; +pub const CFLUSH_BUCKET_NUMBER: usize = 500; -const CFLUSH_NUM_ITER: u32 = 1 << 11; +pub const CFLUSH_NUM_ITER: u32 = 1 << 11; pub fn calibrate_flush( array: &[u8], @@ -260,6 +252,8 @@ fn calibrate_impl_fixed_freq( let to_bucket = |time: u64| -> usize { time as usize / hist_params.bucket_size }; let from_bucket = |bucket: usize| -> u64 { (bucket * hist_params.bucket_size) as u64 }; + + let slicing = if let Some(uarch) = MicroArchitecture::get_micro_architecture() { Some(cache_slicing(uarch, 8)) } else { diff --git a/cache_utils/src/complex_addressing.rs b/cache_utils/src/complex_addressing.rs index 4a0bf2e..f73d0ec 100644 --- a/cache_utils/src/complex_addressing.rs +++ b/cache_utils/src/complex_addressing.rs @@ -56,7 +56,7 @@ impl CacheSlicing { } pub fn hash(&self, addr: usize) -> Option { match self { - SimpleAddressing(mask) => Some((addr & *mask)), + SimpleAddressing(mask) => Some(addr & *mask), ComplexAddressing(masks) => { let mut res = 0; for mask in *masks { diff --git a/cache_utils/src/lib.rs b/cache_utils/src/lib.rs index 2d09eff..0022ae6 100644 --- a/cache_utils/src/lib.rs +++ b/cache_utils/src/lib.rs @@ -45,6 +45,8 @@ pub unsafe fn flush(p: *const u8) { arch_x86::_mm_clflush(p); } +pub fn noop(_: *const T) {} + // future enhancements // prefetch // long nop (64 nops)