Map PIM region to uncacheable region
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
use core::cell::RefCell;
|
||||
use core::fmt::Write;
|
||||
|
||||
use pim_isa::{BankMode, File, Instruction, Kernel};
|
||||
|
||||
use super::{
|
||||
@@ -88,9 +86,9 @@ pub const MATRIX_ADD: Kernel = Kernel([
|
||||
]);
|
||||
|
||||
pub fn execute_matrix_add(
|
||||
pim_matrix_arena0: &RefCell<PimMatrixArena<8, 8>>,
|
||||
pim_matrix_arena1: &RefCell<PimMatrixArena<8, 8>>,
|
||||
dummy_array: &DummyArray,
|
||||
_pim_matrix_arena0: &RefCell<PimMatrixArena<8, 8>>,
|
||||
_pim_matrix_arena1: &RefCell<PimMatrixArena<8, 8>>,
|
||||
_dummy_array: &DummyArray,
|
||||
) {
|
||||
// pim_matrix_arena0
|
||||
// .borrow()
|
||||
@@ -182,24 +180,21 @@ pub fn execute_matrix_multiply<const R: usize, const C: usize>(
|
||||
) {
|
||||
pim_state.set_bank_mode(BankMode::PimAllBank);
|
||||
|
||||
let mut i = 0;
|
||||
while i < (R * C) {
|
||||
for i in 0..(R * C) {
|
||||
let left_index = i % R;
|
||||
let right_index = (i / R) * R;
|
||||
|
||||
pim_matrix_arena0.execute_instruction_read_single_bank(left_index + R * 0);
|
||||
pim_matrix_arena0.execute_instruction_read_single_bank(left_index + R * 1);
|
||||
pim_matrix_arena0.execute_instruction_read_single_bank(left_index + R * 2);
|
||||
for k in 0..R {
|
||||
pim_matrix_arena0.execute_instruction_read_single_bank(left_index + R * k);
|
||||
}
|
||||
|
||||
pim_matrix_arena1.execute_instruction_read_single_bank(right_index + 0);
|
||||
pim_matrix_arena1.execute_instruction_read_single_bank(right_index + 1);
|
||||
pim_matrix_arena1.execute_instruction_read_single_bank(right_index + 2);
|
||||
for k in 0..C {
|
||||
pim_matrix_arena1.execute_instruction_read_single_bank(right_index + k);
|
||||
}
|
||||
|
||||
pim_matrix_arena2.execute_instruction_write_single_bank(i);
|
||||
|
||||
dummy_array.execute_instruction_read_single_bank(0);
|
||||
|
||||
i += 1;
|
||||
}
|
||||
|
||||
pim_state.set_bank_mode(BankMode::SingleBank);
|
||||
|
||||
Reference in New Issue
Block a user